{"id":569,"date":"2026-06-08T10:00:00","date_gmt":"2026-06-08T10:00:00","guid":{"rendered":"https:\/\/zydeno.com\/?p=569"},"modified":"2026-10-14T16:43:19","modified_gmt":"2026-10-14T16:43:19","slug":"por-que-utilizamos-swift-en-lugar-de-swiftui","status":"publish","type":"post","link":"https:\/\/zydeno.com\/es\/por-que-utilizamos-swift-en-lugar-de-swiftui\/","title":{"rendered":"\u00bfPor qu\u00e9 lanzamos Swift y no SwiftUI?"},"content":{"rendered":"<p>En todas las WWDC celebradas desde 2019 se ha apostado cada vez m\u00e1s por SwiftUI, y cada vez que empezamos una nueva aplicaci\u00f3n nos reunimos en equipo para plantearnos la misma pregunta: <em>\u00bfYa se ha ganado un hueco en nuestras aplicaciones?<\/em> Hasta ahora, la respuesta ha sido \u00abno\u00bb en lo que respecta a los aspectos importantes, y probablemente \u00abs\u00ed\u00bb en lo que respecta a los que no lo son.<\/p>\n<p>Esto no es un juicio sobre SwiftUI en general. Hay muchos equipos que lanzan aplicaciones excelentes con este marco. Es una descripci\u00f3n de d\u00f3nde encaja en nuestro caso: un peque\u00f1o estudio que mantiene varias aplicaciones iPhone y iPad a la vez, sin margen para sorpresas en ninguna de ellas.<\/p>\n<h2>Lo que funciona<\/h2>\n<p>SwiftUI es realmente genial para pantallas de configuraci\u00f3n est\u00e1ticas, dise\u00f1os de formularios y cualquier situaci\u00f3n en la que el \u00e1rbol de vistas sea peque\u00f1o y el flujo de datos sea unidireccional. Nosotros lo utilizamos. Tambi\u00e9n lo usamos para obtener vistas previas mientras dise\u00f1amos: el ciclo de iteraci\u00f3n es m\u00e1s r\u00e1pido que el de UIKit.<\/p>\n<p>En la pr\u00e1ctica, esto significa que la pantalla en la que se seleccionan unidades o se exportan datos suele estar realizada con SwiftUI, integrada en una aplicaci\u00f3n cuyas pantallas principales est\u00e1n creadas con UIKit. Ambas coexisten sin apenas problemas, y combinarlas nos permite aprovechar los puntos fuertes de cada una en lugar de tener que basar toda la aplicaci\u00f3n en un \u00fanico enfoque.<\/p>\n<h2>Lo que no (para nosotros)<\/h2>\n<p>En cuanto una pantalla necesita gestos personalizados, listas que exigen un alto rendimiento, un estado de navegaci\u00f3n complejo o una sincronizaci\u00f3n precisa de las animaciones, volvemos a recurrir a UIKit. La raz\u00f3n no es una moda pasajera, sino el tipo de errores que nos encontramos cuando no lo hacemos. SwiftUI ha mejorado considerablemente en sus \u00faltimas versiones, pero sigue sorprendi\u00e9ndonos en tiempo de ejecuci\u00f3n de formas en las que UIKit rara vez lo hace.<\/p>\n<p>Los ejemplos concretos ayudan. Una aplicaci\u00f3n para aprender a teclear necesita que cada pulsaci\u00f3n genere el car\u00e1cter correcto sin retrasos visibles y que la pantalla siga el ritmo de los dedos del usuario. Un historial extenso de entradas registradas en un gestor de tareas debe desplazarse con fluidez en un tel\u00e9fono antiguo. Una agenda con funci\u00f3n de arrastrar y soltar necesita gestos que no entren en conflicto con los propios del sistema. Ese es el tipo de pantallas en las que hemos encontrado que UIKit es m\u00e1s predecible.<\/p>\n<h2>Las ventajas y desventajas<\/h2>\n<p>Seguir utilizando UIKit tiene su precio. Implica m\u00e1s c\u00f3digo para la misma pantalla, y significa que cualquiera que se incorpore al proyecto tiene que sentirse c\u00f3modo con un marco de trabajo m\u00e1s antiguo que los tutoriales suelen omitir cada vez m\u00e1s. Algunas nuevas funciones del sistema llegan primero a SwiftUI, y adoptarlas desde UIKit requiere un trabajo adicional de adaptaci\u00f3n. Tambi\u00e9n debemos ser sinceros y reconocer que parte de nuestra cautela se debe a la familiaridad: conocer a fondo un marco de trabajo tiene su valor, pero tambi\u00e9n puede convertirse en una excusa.<\/p>\n<p>Tambi\u00e9n hay una cuesti\u00f3n pendiente. Nuestras aplicaciones iPhone y iPad ya funcionan en los Mac con Apple Silicon, y tenemos previsto desarrollar aplicaciones nativas para Mac. Si SwiftUI facilita de forma significativa el uso compartido del c\u00f3digo de interfaz entre esas plataformas, el c\u00e1lculo podr\u00eda cambiar.<\/p>\n<h2>En qu\u00e9 nos equivocamos<\/h2>\n<p>En una ocasi\u00f3n utilizamos SwiftUI para una pantalla que, sobre el papel, parec\u00eda sencilla, pero que result\u00f3 no serlo: una lista con acciones de deslizamiento personalizadas y un estado que cambiaba al desplazarse. Funcionaba bien en las vistas previas, pero de forma extra\u00f1a en los dispositivos reales. Reconstruirla en UIKit nos llev\u00f3 m\u00e1s tiempo del que nos habr\u00eda llevado empezar desde cero con ese framework. Ahora lo decidimos pantalla por pantalla, desde el principio, en funci\u00f3n de lo que la pantalla tenga que hacer realmente.<\/p>\n<p>Esa es la \u00fanica prueba de verdad: <em>\u00bfNos sorprender\u00e1 esto en la producci\u00f3n?<\/em> En la mayor\u00eda de los proyectos que desarrollamos, la respuesta descarta el uso de SwiftUI como base. Volveremos a plante\u00e1rnoslo el a\u00f1o que viene.<\/p>","protected":false},"excerpt":{"rendered":"<p>Argumentos de peso para seguir utilizando UIKit cuando el resto del sector ha dado un paso adelante.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-569","post","type-post","status-publish","format-standard","hentry","category-journal"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.2 (Yoast SEO v22.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Why we ship Swift, not SwiftUI - Zydeno Studio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zydeno.com\/es\/por-que-utilizamos-swift-en-lugar-de-swiftui\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why we ship Swift, not SwiftUI\" \/>\n<meta property=\"og:description\" content=\"The honest case for sticking with UIKit when the rest of the industry has moved on.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zydeno.com\/es\/por-que-utilizamos-swift-en-lugar-de-swiftui\/\" \/>\n<meta property=\"og:site_name\" content=\"Zydeno Studio\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-08T10:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-14T16:43:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/zydeno.com\/wp-content\/uploads\/2026\/10\/zydeno-social.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andrii Matiushev\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrii Matiushev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/\"},\"author\":{\"name\":\"Andrii Matiushev\",\"@id\":\"https:\/\/zydeno.com\/#\/schema\/person\/1af4d0e254f05b407f306ede28252259\"},\"headline\":\"Why we ship Swift, not SwiftUI\",\"datePublished\":\"2026-06-08T10:00:00+00:00\",\"dateModified\":\"2026-10-14T16:43:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/\"},\"wordCount\":588,\"publisher\":{\"@id\":\"https:\/\/zydeno.com\/#organization\"},\"articleSection\":[\"Journal\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/\",\"url\":\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/\",\"name\":\"Why we ship Swift, not SwiftUI - Zydeno Studio\",\"isPartOf\":{\"@id\":\"https:\/\/zydeno.com\/#website\"},\"datePublished\":\"2026-06-08T10:00:00+00:00\",\"dateModified\":\"2026-10-14T16:43:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zydeno.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why we ship Swift, not SwiftUI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zydeno.com\/#website\",\"url\":\"https:\/\/zydeno.com\/\",\"name\":\"Zydeno Studio\",\"description\":\"Zydeno is an indie studio designing apps across many categories \u2014 united by a shared obsession with craft and detail. Fast, opinionated, independent apps for iPhone, Android, Windows and Mac, plus extensions for Chrome, Edge and Firefox. Built slowly, shipped carefully.\",\"publisher\":{\"@id\":\"https:\/\/zydeno.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zydeno.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/zydeno.com\/#organization\",\"name\":\"Zydeno Studio\",\"url\":\"https:\/\/zydeno.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/zydeno.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/zydeno.com\/wp-content\/uploads\/2026\/04\/cropped-icon-512-1.png\",\"contentUrl\":\"https:\/\/zydeno.com\/wp-content\/uploads\/2026\/04\/cropped-icon-512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Zydeno Studio\"},\"image\":{\"@id\":\"https:\/\/zydeno.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/zydeno.com\/#\/schema\/person\/1af4d0e254f05b407f306ede28252259\",\"name\":\"Andrii Matiushev\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/zydeno.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4df57b6b4737601c798e728e7d4d209a9a9513422db2b613ff707286cb1ea58a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4df57b6b4737601c798e728e7d4d209a9a9513422db2b613ff707286cb1ea58a?s=96&d=mm&r=g\",\"caption\":\"Andrii Matiushev\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Por qu\u00e9 ofrecemos Swift, y no SwiftUI - Zydeno Studio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zydeno.com\/es\/por-que-utilizamos-swift-en-lugar-de-swiftui\/","og_locale":"es_ES","og_type":"article","og_title":"Why we ship Swift, not SwiftUI","og_description":"The honest case for sticking with UIKit when the rest of the industry has moved on.","og_url":"https:\/\/zydeno.com\/es\/por-que-utilizamos-swift-en-lugar-de-swiftui\/","og_site_name":"Zydeno Studio","article_published_time":"2026-06-08T10:00:00+00:00","article_modified_time":"2026-10-14T16:43:19+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/zydeno.com\/wp-content\/uploads\/2026\/10\/zydeno-social.png","type":"image\/png"}],"author":"Andrii Matiushev","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Andrii Matiushev","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/#article","isPartOf":{"@id":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/"},"author":{"name":"Andrii Matiushev","@id":"https:\/\/zydeno.com\/#\/schema\/person\/1af4d0e254f05b407f306ede28252259"},"headline":"Why we ship Swift, not SwiftUI","datePublished":"2026-06-08T10:00:00+00:00","dateModified":"2026-10-14T16:43:19+00:00","mainEntityOfPage":{"@id":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/"},"wordCount":588,"publisher":{"@id":"https:\/\/zydeno.com\/#organization"},"articleSection":["Journal"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/","url":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/","name":"Por qu\u00e9 ofrecemos Swift, y no SwiftUI - Zydeno Studio","isPartOf":{"@id":"https:\/\/zydeno.com\/#website"},"datePublished":"2026-06-08T10:00:00+00:00","dateModified":"2026-10-14T16:43:19+00:00","breadcrumb":{"@id":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zydeno.com\/"},{"@type":"ListItem","position":2,"name":"Why we ship Swift, not SwiftUI"}]},{"@type":"WebSite","@id":"https:\/\/zydeno.com\/#website","url":"https:\/\/zydeno.com\/","name":"Zydeno Studio","description":"Zydeno es un estudio independiente que dise\u00f1a aplicaciones de diversas categor\u00edas, todas ellas unidas por una obsesi\u00f3n compartida por la calidad y el detalle. Aplicaciones r\u00e1pidas, con car\u00e1cter e independientes para iPhone, Android, Windows y Mac, adem\u00e1s de extensiones para Chrome, Edge y Firefox. Desarrolladas sin prisas, lanzadas con esmero.","publisher":{"@id":"https:\/\/zydeno.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zydeno.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/zydeno.com\/#organization","name":"Zydeno Studio","url":"https:\/\/zydeno.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/zydeno.com\/#\/schema\/logo\/image\/","url":"https:\/\/zydeno.com\/wp-content\/uploads\/2026\/04\/cropped-icon-512-1.png","contentUrl":"https:\/\/zydeno.com\/wp-content\/uploads\/2026\/04\/cropped-icon-512-1.png","width":512,"height":512,"caption":"Zydeno Studio"},"image":{"@id":"https:\/\/zydeno.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zydeno.com\/#\/schema\/person\/1af4d0e254f05b407f306ede28252259","name":"Andrii Matiushev","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/zydeno.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4df57b6b4737601c798e728e7d4d209a9a9513422db2b613ff707286cb1ea58a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4df57b6b4737601c798e728e7d4d209a9a9513422db2b613ff707286cb1ea58a?s=96&d=mm&r=g","caption":"Andrii Matiushev"}}]}},"_links":{"self":[{"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/posts\/569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/comments?post=569"}],"version-history":[{"count":2,"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/posts\/569\/revisions"}],"predecessor-version":[{"id":774,"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/posts\/569\/revisions\/774"}],"wp:attachment":[{"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/media?parent=569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/categories?post=569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zydeno.com\/es\/wp-json\/wp\/v2\/tags?post=569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}