{"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":"perche-distribuiamo-swift-e-non-swiftui","status":"publish","type":"post","link":"https:\/\/zydeno.com\/it\/perche-distribuiamo-swift-e-non-swiftui\/","title":{"rendered":"Perch\u00e9 distribuiamo Swift e non SwiftUI"},"content":{"rendered":"<p>Ogni WWDC dal 2019 ha spinto SwiftUI un po\u2019 oltre i limiti, e ogni volta che iniziamo a sviluppare una nuova app ci riuniamo come team per porci la stessa domanda: <em>Si \u00e8 gi\u00e0 guadagnato un posto nelle nostre app?<\/em> Finora la risposta \u00e8 stata \u201cno\u201d per gli aspetti che contano \u2014 e probabilmente \u201cs\u00ec\u201d per quelli che non contano.<\/p>\n<p>Questo non vuole essere un giudizio su SwiftUI in generale. Sono molti i team che realizzano app eccellenti utilizzando questo framework. Si tratta piuttosto di una descrizione di come lo utilizziamo noi: un piccolo studio che gestisce contemporaneamente diverse app per iPhone e iPad, senza margine per imprevisti in nessuna di esse.<\/p>\n<h2>Cosa funziona<\/h2>\n<p>SwiftUI \u00e8 davvero ottimo per le schermate di impostazioni statiche, i layout dei moduli e qualsiasi situazione in cui l\u2019albero delle viste sia piccolo e il flusso dei dati sia unidirezionale. Noi lo usiamo. Lo utilizziamo anche per le anteprime durante la progettazione: il ciclo di iterazione \u00e8 pi\u00f9 veloce rispetto a quello di UIKit.<\/p>\n<p>In pratica, ci\u00f2 significa che la schermata in cui si selezionano le unit\u00e0 o si esportano i dati \u00e8 spesso realizzata con SwiftUI, integrata all\u2019interno di un\u2019app le cui schermate principali sono basate su UIKit. Le due tecnologie coesistono senza particolari attriti e la loro combinazione ci permette di utilizzare ciascuna di esse nei contesti in cui d\u00e0 il meglio di s\u00e9, invece di dedicare l\u2019intera app a un unico approccio.<\/p>\n<h2>Cosa non funziona (per noi)<\/h2>\n<p>Non appena una schermata richiede gesti personalizzati, elenchi sensibili alle prestazioni, stati di navigazione complessi o tempistiche precise nelle animazioni, torniamo a UIKit. Il motivo non \u00e8 una moda del momento: \u00e8 il tipo di bug che riscontriamo quando non lo facciamo. SwiftUI \u00e8 migliorato notevolmente nelle ultime versioni, ma continua a riservarci sorprese in fase di esecuzione come raramente accade con UIKit.<\/p>\n<p>I casi concreti aiutano. Un programma per imparare a digitare richiede che ogni battuta produca il carattere corretto senza ritardi visibili e che lo schermo stia al passo con le dita dell\u2019utente. Una lunga cronologia di voci registrate in un\u2019app di monitoraggio deve scorrere senza intoppi su un telefono di vecchia generazione. Un\u2019agenda con funzionalit\u00e0 drag-and-drop richiede gesti che non entrino in conflitto con quelli del sistema stesso. Sono proprio questi i tipi di schermate in cui abbiamo riscontrato che UIKit \u00e8 pi\u00f9 prevedibile.<\/p>\n<h2>I compromessi<\/h2>\n<p>Continuare a usare UIKit ha un costo. Significa pi\u00f9 codice per la stessa schermata e implica che chiunque si unisca al team debba sentirsi a proprio agio con un framework pi\u00f9 vecchio che i tutorial tendono sempre pi\u00f9 spesso a tralasciare. Alcune nuove funzionalit\u00e0 di sistema arrivano prima in SwiftUI e adottarle da UIKit richiede un lavoro di integrazione aggiuntivo. Dobbiamo anche ammettere che parte della nostra cautela deriva dalla familiarit\u00e0: conoscere a fondo un framework ha il suo valore, ma pu\u00f2 anche diventare una scusa.<\/p>\n<p>C\u2019\u00e8 anche una questione ancora aperta. Le nostre app iPhone e iPad funzionano gi\u00e0 sui dispositivi Mac con Apple Silicon, e abbiamo in programma di sviluppare app native per Mac. Se SwiftUI rendesse significativamente pi\u00f9 semplice la condivisione del codice dell\u2019interfaccia tra queste piattaforme, il quadro potrebbe cambiare.<\/p>\n<h2>Cosa abbiamo sbagliato<\/h2>\n<p>Una volta abbiamo usato SwiftUI per una schermata che sulla carta sembrava semplice, ma che poi si \u00e8 rivelata tutt\u2019altro: un elenco con azioni di scorrimento personalizzate e uno stato che cambiava durante lo scorrimento. Funzionava bene nelle anteprime, ma in modo strano sui dispositivi reali. Ricostruirla in UIKit ci ha richiesto pi\u00f9 tempo di quanto ne avrebbe richiesto partire direttamente da l\u00ec. Ora decidiamo caso per caso, in anticipo, in base a ci\u00f2 che la schermata deve effettivamente fare.<\/p>\n<p>Questa \u00e8 l'unica vera prova: <em>Ci riserver\u00e0 qualche sorpresa in fase di produzione?<\/em> Per la maggior parte dei progetti che realizziamo, la risposta esclude SwiftUI come piattaforma principale. Ne riparleremo l'anno prossimo.<\/p>","protected":false},"excerpt":{"rendered":"<p>Le ragioni sincere per continuare a utilizzare UIKit quando il resto del settore \u00e8 gi\u00e0 andato avanti.<\/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\/it\/perche-distribuiamo-swift-e-non-swiftui\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/perche-distribuiamo-swift-e-non-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=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrii Matiushev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuti\" \/>\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\":\"it-IT\"},{\"@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\":\"it-IT\",\"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\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/zydeno.com\/#organization\",\"name\":\"Zydeno Studio\",\"url\":\"https:\/\/zydeno.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@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\":\"it-IT\",\"@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":"Perch\u00e9 distribuiamo Swift e non 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\/it\/perche-distribuiamo-swift-e-non-swiftui\/","og_locale":"it_IT","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\/it\/perche-distribuiamo-swift-e-non-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":{"Scritto da":"Andrii Matiushev","Tempo di lettura stimato":"3 minuti"},"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":"it-IT"},{"@type":"WebPage","@id":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/","url":"https:\/\/zydeno.com\/why-we-ship-swift-not-swiftui\/","name":"Perch\u00e9 distribuiamo Swift e non 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":"it-IT","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 \u00e8 uno studio indipendente che sviluppa app in diverse categorie, accomunate da una comune passione per la qualit\u00e0 artigianale e l\u2019attenzione ai dettagli. App veloci, con una forte personalit\u00e0 e indipendenti per iPhone, Android, Windows e Mac, oltre a estensioni per Chrome, Edge e Firefox. Realizzate con calma, lanciate con cura.","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":"it-IT"},{"@type":"Organization","@id":"https:\/\/zydeno.com\/#organization","name":"Zydeno Studio","url":"https:\/\/zydeno.com\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@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":"it-IT","@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\/it\/wp-json\/wp\/v2\/posts\/569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/comments?post=569"}],"version-history":[{"count":2,"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/posts\/569\/revisions"}],"predecessor-version":[{"id":774,"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/posts\/569\/revisions\/774"}],"wp:attachment":[{"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/media?parent=569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/categories?post=569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zydeno.com\/it\/wp-json\/wp\/v2\/tags?post=569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}