En este artículo, revisaremos las novedades y las funciones más destacadas de SwiftUI, presentadas por Apple en la WWDC25, junto con iOS 26, macOS 26, watchOS 26, iPadOS 26, tvOS 26 y visionOS 26, además de Xcode 26.
Efecto Liquid Glass
El nuevo efecto Liquid Glass se utiliza en casi todas las apps, controles, etc. del sistema. Implementarlo en nuestra app SwiftUI no es una tarea difícil.
Por suerte, SwiftUI es compatible con el efecto Liquid Glass tanto para controles nativos como para vistas personalizadas. Aquí tienes un ejemplo de cómo añadir el efecto Liquid Glass a un botón:
Button("Hello Developer") {
}
.buttonStyle(.glass)
Usa glass con el modificador buttonStyle(_:) para aplicar Liquid Glass a las instancias de un botón.
En Xcode, el resultado sería el siguiente:

Vistas personalizadas con efecto Liquid Glass
También podemos crear vistas personalizadas con efecto Liquid Glass. Mira este ejemplo:
Image(systemName: "suit.heart.fill")
.font(.largeTitle)
.foregroundStyle(.red.gradient)
.frame(width: 50, height: 50)
.glassEffect(.regular, in: .circle)
El resultado en Xcode es el siguiente:

GlassEffectContainer
SwiftUI ofrece un contenedor nativo llamado GlassEffectContainer. Con este contenedor, podemos crear fácilmente efectos de transformación y agrupar varias vistas para lograr un único efecto de cristal.
Aquí puedes ver un ejemplo con el nuevo GlassEffectContainer, disponible en iOS 26, macOS 26, iPadOS 26, watchOS 26 y tvOS 26.
struct ContentView: View {
@State private var isExpanded: Bool = false
var body: some View {
ZStack {
Image("ios26")
.resizable()
.aspectRatio(contentMode: .fill)
.clipShape(.rect(cornerRadius: 20))
.ignoresSafeArea()
GlassEffectContainer(spacing: 20) {
VStack(spacing: 20) {
Spacer()
if isExpanded {
Group {
Image(systemName: "suit.heart.fill")
.font(.largeTitle)
.foregroundStyle(.red.gradient)
.frame(width: 50, height: 50)
Image(systemName: "magnifyingglass")
.font(.largeTitle)
.foregroundStyle(.white.gradient)
.frame(width: 50, height: 50)
}
.glassEffect(.regular, in: .circle)
}
Button {
withAnimation(.smooth(duration: 1, extraBounce: 0)) {
isExpanded.toggle()
}
} label: {
Image(systemName: "ellipsis")
.font(.largeTitle)
.foregroundStyle(.red.gradient)
.frame(width: 40, height: 40)
}
.buttonStyle(.glass)
}
}
.padding(15)
}
}
}
El resultado en Xcode sería el siguiente:
glassEffectTransition
Si no necesitas animación cuando una configuración específica está habilitada en tu aplicación SwiftUI, como el interruptor “Reducir animaciones”, puedes usar el modificador glassEffectTransition para eliminar los efectos de transformación y las animaciones. Simplemente agrega esta línea de código a tu aplicación SwiftUI:
.glassEffectTransition(.identity)
En Xcode el resultado sería el siguiente:

glassEffectUnion
Usa el modifier glassEffectUnion si quieres agrupar dos vistas para crear un único efecto de cristal sin escribir una pila HStack o VStack independiente. Este modificador aplicará el efecto de cristal único en lugar de que cada vista tenga sus propios efectos.
Simplemente, declara primero la variable:
@Namespace private var animation
y después añade el modifier de la siguiente forma:
.glassEffectUnion(id: "1", namespace: animation)
El resultado en Xcode sería el siguiente:

Framework Foundation Models

Xcode 26 ahora incluye el SDK de Foundation Models, que permite a los desarrolladores utilizar los modelos de inteligencia artificial en el dispositivo. Al estar en el dispositivo, estos modelos funcionarán incluso sin conexión. Esto es posible gracias al procesamiento local que Apple ha implementado en sus chips más recientes.
Además, Apple ha enfatizado que este acceso a la inteligencia artificial no tendrá costo adicional para los desarrolladores y ha prometido que el procesamiento de datos del usuario se realizará localmente en el dispositivo.
scrollEdgeEffectStyle
De forma predeterminada, los componentes de List, Navigation y otros de la interfaz de usuario ahora tienen un efecto de desenfoque suave en las áreas seguras, también conocido como Progressive Blurs. Sin embargo, SwiftUI proporciona un modifier simple para controlar estos efectos.
Este modifier es scrollEdgeEffectStyle. Simplemente agrega esta línea de código a tu List, por ejemplo:
.scrollEdgeEffectStyle(.hard, for: .top)
El resultado en Xcode 26 sería el siguiente:

backgroundExtensionEffect
El nuevo modifier backgroundExtensionEffect extiende la vista a las áreas seguras disponibles con sutiles efectos de desenfoque.
Utiliza este modifier cuando desees crear copias fuera del área segura para que la vista y sus copias funcionen como fondos para otros elementos situados encima. El uso más común es aplicarlo a una vista en la columna de detalles de una vista dividida de navegación para que se extienda bajo la barra lateral o la región del inspector y proporcione imágenes inmersivas y fluidas.
Simplemente añade esta línea de código a su proyecto de Xcode con iOS 26:
.backgroundExtensionEffect()
Veamos un ejemplo, agrega este código a Xcode, con el modifier backgroundExtensionEffect:
var body: some View {
GeometryReader {
let size = $0.size
Image("ios26")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: size.width, height: size.height)
.clipped()
.backgroundExtensionEffect()
}
.scrollEdgeEffectStyle(.hard, for: .top)
El resultado en Xcode 26 sería el siguiente:

Editor de texto enriquecido en SwiftUI
El editor de texto (TextEditor) ahora admite AttributedString como binding, y también incluye opciones útiles para editar texto enriquecido.
Echa un vistazo a este ejemplo de editor de texto en SwiftUI:
struct ContentView: View {
@State private var richText = AttributedString()
var body: some View {
TextEditor(text: $richText)
.frame(height: 300)
.padding(15)
}
El resultado en Xcode sería el siguiente:

WebView en SwiftUI
SwiftUI ahora es compatible con WebView nativo con varias funciones integradas, como el seguimiento y la actualización de las posiciones de desplazamiento, y la desactivación de ciertos gestos.
Para trabajar con WebKit en SwiftUI, simplemente importe el framework en Xcode usando esta línea de código:
import WebKit
Y luego, con este código, podemos usar un WebView en nuestra aplicación SwiftUI:

Otra forma de obtener el mismo resultado es usar este código Swift:
import WebKit
struct ContentView: View {
@State private var page = WebPage()
var body: some View {
WebView(page)
.onAppear() {
page.load(URLRequest(url: url))
}
}
var url : URL {
URL(string: "https://swiftprogramming.com")!
}
}
Personalización de TabView
De forma predeterminada, SwiftUI se adapta automáticamente a esta nueva barra de pestañas brillante de iOS 26 (si la aplicación usaba anteriormente la barra de pestañas nativa y no la personalizada).

TabViewBottomAccessory()
En iOS 26, TabView permitirá añadir una vista de accesorios sobre la barra de pestañas, al igual que la app Apple Music. Veamos un ejemplo:
.tabViewBottomAccessory {
Text("Hello World")
.padding(.horizontal, 15)
}
El resultado en Xcode sería el siguiente:

Nuevo modifier ToolBarSpacer
De forma predeterminada, todos los elementos de la barra de herramientas están agrupados en iOS 26. Sin embargo, puede que en ocasiones sea necesario separar un botón del grupo. Este nuevo modifier es especialmente útil para separar elementos de la barra de herramientas o incluso para crear varios grupos de elementos de la barra de herramientas.
Si tienes cualquier duda sobre este artículo, contacta conmigo y estaré encantado de ayudarte 🙂. Puedes contactar conmigo en mi perfil de X o en mi perfil de Instagram.