{"id":570,"date":"2026-06-22T10:00:00","date_gmt":"2026-06-22T10:00:00","guid":{"rendered":"https:\/\/zydeno.com\/?p=570"},"modified":"2026-10-14T16:43:18","modified_gmt":"2026-10-14T16:43:18","slug":"a-obsessao-pelo-arranque-a-frio","status":"publish","type":"post","link":"https:\/\/zydeno.com\/pt\/a-obsessao-pelo-arranque-a-frio\/","title":{"rendered":"A obsess\u00e3o pelo arranque a frio"},"content":{"rendered":"<p>O arranque a frio \u00e9 a primeira impress\u00e3o que uma aplica\u00e7\u00e3o transmite ao utilizador. Se demorar mais de um segundo a ficar operacional, j\u00e1 transmitimos \u00e0 pessoa do outro lado a ideia de que se trata de uma aplica\u00e7\u00e3o lenta, independentemente da rapidez com que tudo o resto funcione a partir da\u00ed.<\/p>\n<p>\u00c9 tamb\u00e9m o momento que as pessoas vivem com mais frequ\u00eancia. Uma aplica\u00e7\u00e3o para registar h\u00e1bitos \u00e9 aberta durante alguns segundos para marcar algo como conclu\u00eddo. Uma aplica\u00e7\u00e3o para registar enxaquecas \u00e9 aberta quando algu\u00e9m se sente mal e quer registar isso rapidamente. Para aplica\u00e7\u00f5es como estas, a abertura n\u00e3o \u00e9 um prel\u00fadio da experi\u00eancia \u2014 \u00e9 a maior parte da experi\u00eancia.<\/p>\n<h2>O nosso objetivo<\/h2>\n<p>O nosso objetivo \u00e9 <strong>menos de 600 ms<\/strong> Desde o toque num \u00edcone at\u00e9 \u00e0 interface de utilizador interativa num iPhone com cinco anos. Isso acontece depois de o sistema operativo ter carregado o ficheiro bin\u00e1rio, atribu\u00eddo mem\u00f3ria e-nos ter passado o fio condutor principal. Tudo o que acontece entre essa transfer\u00eancia e o primeiro fotograma fica a nosso cargo.<\/p>\n<p>\u201cInterativo\u201d \u00e9 a palavra-chave. Um ecr\u00e3 inicial que aparece instantaneamente e depois fica ali parado n\u00e3o conta. Nem um primeiro fotograma cheio de marcadores de posi\u00e7\u00e3o que se reorganizam um momento depois. O objetivo \u00e9 o momento em que se pode tocar naquilo que se veio procurar e este responde.<\/p>\n<p>Fazemos as medi\u00e7\u00f5es no aparelho antigo, e n\u00e3o no novo, pela mesma raz\u00e3o pela qual fazemos os testes nesse aparelho: o telem\u00f3vel mais recente ir\u00e1 disfar\u00e7ar praticamente qualquer erro.<\/p>\n<h2>O que isso implica<\/h2>\n<p>Atingir esse n\u00famero p\u00f5e fim a muitas discuss\u00f5es logo no in\u00edcio. O networking n\u00e3o pode ocorrer na fase de lan\u00e7amento. Os SDKs de terceiros s\u00e3o dif\u00edceis de vender \u2014 a maioria deles gera tarefas em segundo plano antes de <code>application(_:didFinishLaunching\u2026)<\/code> retorna sempre. As caches de imagens s\u00e3o carregadas de forma diferida. As migra\u00e7\u00f5es da base de dados s\u00e3o executadas numa fila em segundo plano, sem nunca bloquear a fila principal.<\/p>\n<p>Da\u00ed decorrem alguns h\u00e1bitos. O primeiro ecr\u00e3 \u00e9 constru\u00eddo a partir de dados que j\u00e1 se encontram no dispositivo, pelo que a aplica\u00e7\u00e3o mostra imediatamente algo concreto e atualiza-se discretamente caso seja necess\u00e1rio. As funcionalidades que n\u00e3o s\u00e3o necess\u00e1rias no primeiro ecr\u00e3 s\u00f3 s\u00e3o configuradas quando algu\u00e9m as solicita. E sempre que nos sentimos tentados a adicionar uma biblioteca, perguntamos o que ela faz no momento do arranque antes de perguntarmos o que ela faz por n\u00f3s.<\/p>\n<h2>As vantagens e desvantagens<\/h2>\n<p>Esta disciplina tem o seu pre\u00e7o. Recusar um SDK conveniente significa, por vezes, ter de escrever e manter n\u00f3s pr\u00f3prios o c\u00f3digo equivalente. Apresentar primeiro os dados locais implica conceber a aplica\u00e7\u00e3o tendo em conta a possibilidade de estes estarem ligeiramente desatualizados. O carregamento diferido exige um cuidado redobrado para evitar atrasos na primeira vez que se abre um ecr\u00e3 mais pesado. Aceitamos esses custos porque a alternativa \u00e9 um pequeno impacto em cada lan\u00e7amento, para sempre, para todos.<\/p>\n<h2>O que fizemos de errado<\/h2>\n<p>O tempo de arranque raramente sofre uma altera\u00e7\u00e3o dr\u00e1stica de uma s\u00f3 vez. \u00c9 um processo gradual: um pouco de c\u00f3digo de configura\u00e7\u00e3o aqui, uma verifica\u00e7\u00e3o extra ali, cada uma inofensiva por si s\u00f3. Aprendemos isso da maneira mais dif\u00edcil, ao percebermos tarde demais que uma aplica\u00e7\u00e3o tinha ficado mais lenta a abrir, sem que houvesse um \u00fanico commit a que se pudesse atribuir a culpa. Agora, o tempo de arranque \u00e9 verificado no dispositivo de refer\u00eancia como parte de cada lan\u00e7amento, para que qualquer desvio seja detetado enquanto ainda \u00e9 pequeno.<\/p>\n<p>O mesmo princ\u00edpio aplica-se \u00e0s nossas outras plataformas. Uma aplica\u00e7\u00e3o Windows ou um pop-up de uma extens\u00e3o do navegador tem a sua pr\u00f3pria vers\u00e3o de \u00abarranque a frio\u00bb, e aplica-se a mesma regra: mostrar imediatamente algo \u00fatil e adiar tudo o resto.<\/p>\n<h2>Por que vale a pena<\/h2>\n<p>A disciplina compensa. Quando o lan\u00e7amento \u00e9 r\u00e1pido, tudo o resto tamb\u00e9m o \u00e9 \u2014 porque as mesmas regras aplicam-se em todo o lado.<\/p>","protected":false},"excerpt":{"rendered":"<p>Porque medimos o tempo de arranque das aplica\u00e7\u00f5es em milissegundos \u2014 e porque \u00e9 que isso muda a forma como tudo o resto \u00e9 feito.<\/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-570","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>The cold-start obsession - 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\/pt\/a-obsessao-pelo-arranque-a-frio\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The cold-start obsession\" \/>\n<meta property=\"og:description\" content=\"Why we count app launch time in milliseconds \u2014 and why it changes how everything else gets built.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zydeno.com\/pt\/a-obsessao-pelo-arranque-a-frio\/\" \/>\n<meta property=\"og:site_name\" content=\"Zydeno Studio\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-22T10:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-14T16:43:18+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=\"Tempo estimado de leitura\" \/>\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\/the-cold-start-obsession\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/zydeno.com\/the-cold-start-obsession\/\"},\"author\":{\"name\":\"Andrii Matiushev\",\"@id\":\"https:\/\/zydeno.com\/#\/schema\/person\/1af4d0e254f05b407f306ede28252259\"},\"headline\":\"The cold-start obsession\",\"datePublished\":\"2026-06-22T10:00:00+00:00\",\"dateModified\":\"2026-10-14T16:43:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/zydeno.com\/the-cold-start-obsession\/\"},\"wordCount\":577,\"publisher\":{\"@id\":\"https:\/\/zydeno.com\/#organization\"},\"articleSection\":[\"Journal\"],\"inLanguage\":\"pt-PT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zydeno.com\/the-cold-start-obsession\/\",\"url\":\"https:\/\/zydeno.com\/the-cold-start-obsession\/\",\"name\":\"The cold-start obsession - Zydeno Studio\",\"isPartOf\":{\"@id\":\"https:\/\/zydeno.com\/#website\"},\"datePublished\":\"2026-06-22T10:00:00+00:00\",\"dateModified\":\"2026-10-14T16:43:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/zydeno.com\/the-cold-start-obsession\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zydeno.com\/the-cold-start-obsession\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zydeno.com\/the-cold-start-obsession\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zydeno.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The cold-start obsession\"}]},{\"@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\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/zydeno.com\/#organization\",\"name\":\"Zydeno Studio\",\"url\":\"https:\/\/zydeno.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@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\":\"pt-PT\",\"@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":"A obsess\u00e3o pela inicializa\u00e7\u00e3o a frio - 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\/pt\/a-obsessao-pelo-arranque-a-frio\/","og_locale":"pt_PT","og_type":"article","og_title":"The cold-start obsession","og_description":"Why we count app launch time in milliseconds \u2014 and why it changes how everything else gets built.","og_url":"https:\/\/zydeno.com\/pt\/a-obsessao-pelo-arranque-a-frio\/","og_site_name":"Zydeno Studio","article_published_time":"2026-06-22T10:00:00+00:00","article_modified_time":"2026-10-14T16:43:18+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","Tempo estimado de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/zydeno.com\/the-cold-start-obsession\/#article","isPartOf":{"@id":"https:\/\/zydeno.com\/the-cold-start-obsession\/"},"author":{"name":"Andrii Matiushev","@id":"https:\/\/zydeno.com\/#\/schema\/person\/1af4d0e254f05b407f306ede28252259"},"headline":"The cold-start obsession","datePublished":"2026-06-22T10:00:00+00:00","dateModified":"2026-10-14T16:43:18+00:00","mainEntityOfPage":{"@id":"https:\/\/zydeno.com\/the-cold-start-obsession\/"},"wordCount":577,"publisher":{"@id":"https:\/\/zydeno.com\/#organization"},"articleSection":["Journal"],"inLanguage":"pt-PT"},{"@type":"WebPage","@id":"https:\/\/zydeno.com\/the-cold-start-obsession\/","url":"https:\/\/zydeno.com\/the-cold-start-obsession\/","name":"A obsess\u00e3o pela inicializa\u00e7\u00e3o a frio - Zydeno Studio","isPartOf":{"@id":"https:\/\/zydeno.com\/#website"},"datePublished":"2026-06-22T10:00:00+00:00","dateModified":"2026-10-14T16:43:18+00:00","breadcrumb":{"@id":"https:\/\/zydeno.com\/the-cold-start-obsession\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zydeno.com\/the-cold-start-obsession\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zydeno.com\/the-cold-start-obsession\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zydeno.com\/"},{"@type":"ListItem","position":2,"name":"The cold-start obsession"}]},{"@type":"WebSite","@id":"https:\/\/zydeno.com\/#website","url":"https:\/\/zydeno.com\/","name":"Zydeno Studio","description":"A Zydeno \u00e9 um est\u00fadio independente que desenvolve aplica\u00e7\u00f5es em diversas categorias \u2014 todas unidas por uma obsess\u00e3o comum pelo trabalho artesanal e pelo detalhe. Aplica\u00e7\u00f5es r\u00e1pidas, com personalidade pr\u00f3pria e independentes para iPhone, Android, Windows e Mac, al\u00e9m de extens\u00f5es para o Chrome, o Edge e o Firefox. Desenvolvidas com calma, lan\u00e7adas com cuidado.","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":"pt-PT"},{"@type":"Organization","@id":"https:\/\/zydeno.com\/#organization","name":"Zydeno Studio","url":"https:\/\/zydeno.com\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@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":"pt-PT","@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\/pt\/wp-json\/wp\/v2\/posts\/570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/comments?post=570"}],"version-history":[{"count":2,"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/posts\/570\/revisions"}],"predecessor-version":[{"id":773,"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/posts\/570\/revisions\/773"}],"wp:attachment":[{"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/media?parent=570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/categories?post=570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zydeno.com\/pt\/wp-json\/wp\/v2\/tags?post=570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}