WidgetKit y Live Activities: qué son y cuándo usarlos
WidgetKit abarca widgets, controles y Live Activities, pero solo Live Activities usa ActivityKit, prescinde de los timelines y no tiene acceso a red ni a ubicación.

Qué son realmente WidgetKit y Live Activities
WidgetKit es el framework general, y Live Activities es solo una pieza de él. Bajo ese mismo paraguas están los widgets, las complicaciones de Apple Watch, los controles y las Live Activities, y los cuatro comparten un mismo target de extensión de widget y el mismo código de vistas en SwiftUI. Esa base compartida es la razón por la que Apple recomienda planificar los cuatro juntos, aunque solo pienses lanzar uno primero, el mismo enfoque que ya aplica el equipo detrás de shipping SwiftUI apps with confidence a decisiones más amplias de adopción de SwiftUI.
Los widgets son el miembro de propósito general de la familia. Recurres a uno para mostrar contenido persistente y de un vistazo: un resumen del clima en la pantalla de inicio, el precio de una acción en la pantalla bloqueada, un acceso directo en Today View o en el Smart Stack. Se quedan ahí porque lo que muestran sigue siendo relevante todo el día, no solo durante una tarea puntual.
Las Live Activities son más específicas. Funcionan con ActivityKit, un framework que Apple lanzó junto a iOS y iPadOS 16.1 en octubre de 2022, y ActivityKit tiene un solo trabajo: iniciar, actualizar y finalizar una Live Activity vinculada a un evento con límites claros. Una entrega. Un viaje. Un partido. Un vuelo. Aparece en la pantalla bloqueada, en la Dynamic Island, en el Smart Stack del Apple Watch, en la barra de menú del Mac y en la pantalla de inicio de CarPlay. Tanto los widgets como las Live Activities se renderizan a través de la misma extensión de WidgetKit, pero el modelo de actualización que hay detrás es completamente distinto, y esa diferencia es la verdadera razón por la que no puedes tratarlos como intercambiables. Si estás decidiendo entre uno u otro para una nueva función de desarrollo iOS, empieza por ese modelo de actualización antes que por la interfaz. Llegarás antes a la respuesta correcta.
Los dos también envejecen distinto en pantalla. El trabajo de un widget es verse bien en cada contexto en el que aparece: a todo color en la pantalla de inicio, con un color de acento en las versiones más recientes de iOS, y con una apariencia vibrante y difuminada en la pantalla bloqueada y en StandBy. Una Live Activity tiene menos contextos que cubrir, pero cada uno, la presentación mínima, los estados compacto y expandido de la Dynamic Island, el banner de la pantalla bloqueada, tiene que leerse bien de un vistazo mientras el evento que representa sigue ocurriendo. Si te equivocas en un contexto, terminas con retrabajo avanzado el proyecto. Por eso la guía de Apple es planificar cada apariencia desde el inicio en lugar de ir agregándolas una por una.
Las restricciones que deberían decidir la elección
Dos restricciones resuelven la mayoría de estas decisiones antes de que empiece el diseño.

La primera es el acceso. Las Live Activities no tienen acceso a red ni a ubicación, punto. Los widgets normales y las complicaciones de Apple Watch sí tienen ambos. Si tu función necesita que el propio proceso del widget haga una llamada de red nueva o lea la ubicación del dispositivo, una Live Activity es la herramienta equivocada por diseño, sin importar qué tan bien encaje por lo demás en el caso de uso. Cualquier dato en vivo que muestre una Live Activity tiene que llegar a través de tu app mientras está activa, o mediante una notificación push que envíes desde un servidor.
La segunda es el alcance de plataformas. Las Live Activities no existen en visionOS. Una solicitud de inicio desde una app de iPhone o iPad que por lo demás sea compatible simplemente falla ahí, sin ningún mensaje de error que te ayude, no ocurre y ya. Los widgets normales, en cambio, se renderizan en Apple Vision Pro como objetos tridimensionales que se pueden fijar. Detecta ese vacío en la planificación, no en la revisión de la App Store, la misma categoría de sorpresa tardía que se cubre en App Store rejection reasons for 2026.
Juntando ambas, la decisión se reduce a forma y acceso, no a preferencia:
- Persistente, de propósito general, necesita red o ubicación: construye un widget.
- Delimitado, con forma de evento, de un vistazo durante unas horas, autosuficiente: construye una Live Activity.
Mecánica de actualización: timelines frente a push de ActivityKit
Los widgets funcionan con un timeline. Le entregas a WidgetKit un calendario de estados futuros, y el sistema lo renderiza con una cadencia eficiente en batería y con presupuesto limitado, con las notificaciones push de WidgetKit disponibles como complemento cuando tus datos cambian de forma impredecible.
Las Live Activities prescinden por completo de los timelines. Cada actualización llega a través de ActivityKit: desde tu app mientras está en primer plano, o desde un servidor mediante una notificación push de ActivityKit enviada por APNs, incluido un token de inicio por push que puede lanzar una Live Activity nueva de forma remota. ¿Quieres iniciar una por push, no solo actualizar o finalizar una que ya está corriendo? Vas a necesitar iOS o iPadOS 18. En iOS y iPadOS 17.1 y versiones anteriores, un push remoto puede actualizar o finalizar una Live Activity existente, pero no puede iniciar una. Revisa ese piso de versión desde el principio, sobre todo en un código base que ya está secuenciando con cuidado la adopción de frameworks, el tipo de planificación que se cubre en la guía de migración a la concurrencia estricta de Swift 6.
La frecuencia de actualización también tiene un presupuesto. Una notificación push de ActivityKit con prioridad predeterminada cuenta contra un límite horario del sistema, y una vez agotado ese límite, el sistema puede limitarte. Baja la prioridad y deja de contar contra el presupuesto, que es la razón por la que Apple recomienda ese ajuste más bajo como opción predeterminada para todo lo que no necesite la atención inmediata de la persona. ¿Necesitas actualizaciones frecuentes, como seguir un partido en vivo minuto a minuto? Vas a tener que activarlo explícitamente con un permiso dedicado, y la persona que usa tu app siempre podrá desactivarlo de nuevo en Ajustes.
Hay algunos detalles del ciclo de vida fáciles de pasar por alto hasta que una actividad ya está en vivo frente a usuarios reales. Una fecha de caducidad marca una actividad que tu app no ha podido actualizar, por ejemplo tras perder la conexión, para que la interfaz pueda avisar que la información quizá esté desactualizada en lugar de mostrar algo incorrecto sin avisar. Una actividad finalizada sigue visible en la pantalla bloqueada hasta cuatro horas de forma predeterminada, aunque una fecha de descarte personalizada en el payload de finalización puede acortar esa ventana o eliminarla de inmediato. Y si tienes más de una Live Activity corriendo a la vez, una puntuación de relevancia decide cuál obtiene el único espacio en la Dynamic Island y el primer puesto en la pantalla bloqueada.
Nada de esto hay que memorizarlo antes de escribir una sola línea de código. Hay que contrastarlo con la función que tienes delante: qué datos necesita, qué versiones de iOS tiene que soportar, con qué frecuencia realista tiene que actualizarse. Responde esas tres preguntas primero, y la elección entre un widget y una Live Activity prácticamente se resuelve sola. Kallos Labs incluye ese paso de definición del alcance como parte del presupuesto en cada proyecto de SwiftUI, no como algo que se añade después de que el desarrollo ya está en marcha.
Preguntas frecuentes
¿Necesito una Live Activity o me basta con un widget?
Recurre a un widget cuando la información es persistente y general, como un resumen del clima o el precio de una acción que alguien revisa a lo largo del día. Recurre a una Live Activity cuando hay una tarea o un evento concreto con un inicio y un final claros, y la persona quiere actualizaciones en vivo sin abrir la app: una entrega, un partido, un vuelo.
¿Qué versión de iOS necesito para soportar Live Activities?
ActivityKit, el framework detrás de las Live Activities, requiere iOS o iPadOS 16.1 o posterior. Si tu plan de actualización depende de iniciar una Live Activity de forma remota desde una notificación push en lugar de hacerlo desde dentro de la app, iOS o iPadOS 18 es el piso real, ya que en la versión 17.1 y anteriores solo se puede actualizar o finalizar una actividad ya activa por push, no iniciarla.
¿Puede una Live Activity leer la ubicación del usuario o hacer una llamada de red directamente?
No. Las Live Activities no tienen acceso a red ni a ubicación en absoluto, a diferencia de los widgets normales y las complicaciones de Apple Watch, que sí tienen ambos. Cualquier dato en vivo tiene que llegar a la Live Activity a través de la propia app o mediante una notificación push de ActivityKit enviada desde un servidor.
¿Con qué frecuencia puede actualizarse una Live Activity?
Las notificaciones push de ActivityKit se toman de un presupuesto horario del sistema, y las actualizaciones enviadas con prioridad predeterminada cuentan contra ese presupuesto. Las apps que necesitan actualizaciones frecuentes, como seguir un partido en vivo minuto a minuto, tienen que activarlo con un permiso dedicado, y la persona que usa la app siempre puede desactivarlo en Ajustes.