{"id":988435,"date":"2026-09-16T14:00:00","date_gmt":"2026-09-16T14:00:00","guid":{"rendered":"https:\/\/croncodestudio.com\/en\/?post_type=croncode_post&#038;p=988435"},"modified":"2026-09-08T22:58:41","modified_gmt":"2026-09-08T22:58:41","slug":"first-app-store-release-fixed-scope-vs-agile","status":"publish","type":"croncode_post","link":"https:\/\/croncodestudio.com\/en\/journal\/first-app-store-release-fixed-scope-vs-agile\/","title":{"rendered":"First App Store Release: Fixed Scope vs Agile"},"content":{"rendered":"<div class=\"vgblk-rw-wrapper limit-wrapper\">\n<p>A first App Store release is a legal and operational event. You pick a bundle ID, a privacy label, and a version that strangers can install. The process question is not \u201care we agile.\u201d The question is whether version one is a contract or a learning loop. This article is about that choice. It is not a guide to going faster. For bottlenecks and calendar pressure, read <a href=\"\/en\/journal\/time-to-market-how-agile-product-teams-overcome-development-roadblocks\/\">time to market and roadblocks<\/a> and <a href=\"\/en\/journal\/from-idea-to-market-how-agile-product-teams-overcome-time-to-market-bottlenecks\/\">from idea to market<\/a>.<\/p>\n<blockquote class=\"croncode-kisa-cevap\">\n<p>Use fixed scope when version one must pass review with a known job. Use agile when you are still discovering that job. Do not mix the two without writing the rule.<\/p>\n<\/blockquote>\n<h2>What does fixed scope mean for version one?<\/h2>\n<p>Fixed scope means the first store binary has a written list of screens and a written not-now list. Change goes to version 1.1. The team can still work in weekly slices. The store gate is not a moving target.<\/p>\n<p>This fits products where review will ask hard questions: payments, health-adjacent copy, or a detective fiction that must not look like real surveillance. <a href=\"\/en\/app\/spylie-uncover-the-truth-with-spylie\/\">Spylie<\/a> is a narrative game. The store listing has to say that clearly. A weekly rewrite of the promise would be a review risk, not a virtue.<\/p>\n<h2>When is agile the better contract?<\/h2>\n<p>Agile is better when the first job is still unknown and you can ship to TestFlight without pretending the public listing is stable. You still need a kill rule. \u201cWe will not add a second tab until ten testers finish the first job\u201d is a rule. \u201cWe will see\u201d is not.<\/p>\n<ol>\n<li>Write the first job in one sentence.<\/li>\n<li>Write the smallest UI that finishes it.<\/li>\n<li>Write the change that would force a new store version versus a silent TestFlight.<\/li>\n<\/ol>\n<p>Consumer apps we ship, such as <a href=\"\/en\/app\/yourstyle-ai-stylist-outfit\/\">YourStyle<\/a>, still needed a store-shaped version one. Discovery happened around outfit logic, not around inventing a new category every sprint. Category positioning is a different essay: <a href=\"\/en\/journal\/the-aso-playbook-nobody-talks-about-positioning-a-new-consumer-app-in-a-saturated-category\/\">the ASO playbook on positioning<\/a>.<\/p>\n<h2>How do you write the hybrid without lying?<\/h2>\n<table>\n<thead>\n<tr>\n<th>Layer<\/th>\n<th>Fixed<\/th>\n<th>Flexible<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Store promise<\/td>\n<td>Yes<\/td>\n<td>No, until a version bump<\/td>\n<\/tr>\n<tr>\n<td>Internal copy<\/td>\n<td>No<\/td>\n<td>Yes, in TestFlight<\/td>\n<\/tr>\n<tr>\n<td>Third-party SDK<\/td>\n<td>Yes, for privacy labels<\/td>\n<td>No last-week surprises<\/td>\n<\/tr>\n<tr>\n<td>Visual polish<\/td>\n<td>A floor<\/td>\n<td>Above the floor<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If a client wants agile language and a fixed date, pick one as the contract. The other becomes a wish. Selecting a studio that will say this out loud is covered in <a href=\"\/en\/journal\/how-to-choose-a-custom-software-studio-for-ios\/\">how to choose an iOS studio<\/a>.<\/p>\n<h2>What belongs in the version-one cut?<\/h2>\n<p>The first job, empty and error states, and the privacy text. Not a second product. Feature creep is how first releases miss review windows. See <a href=\"\/en\/journal\/the-hidden-cost-of-feature-creep-why-the-best-consumer-apps-say-no-more-than-they-say-yes\/\">feature creep<\/a> and the step list in <a href=\"\/en\/journal\/from-idea-to-app-store-realistic-build-sequence\/\">from idea to App Store<\/a>.<\/p>\n<h2>What mistakes look like process?<\/h2>\n<ul>\n<li><strong>Sprint theater:<\/strong> standups with no increment that a tester can feel.<\/li>\n<li><strong>Fixed-price, infinite backlog:<\/strong> that is not a scope. It is a dispute.<\/li>\n<li><strong>Changing the privacy nutrition label in silence:<\/strong> that is a store event.<\/li>\n<li><strong>Skipping localization until \u201cafter launch\u201d:<\/strong> if the market needs Turkish and English, it is version one. See <a href=\"\/en\/journal\/designing-products-without-borders-scalability-and-localization-in-global-markets\/\">localization<\/a>.<\/li>\n<\/ul>\n<p>Studio: <a href=\"\/en\/\">Croncode<\/a>. People: <a href=\"\/en\/team\/goktug-unver\/\">Goktug Unver<\/a>, <a href=\"\/en\/team\/yusufhan-sokur\/\">Yusufhan Sokur<\/a>. Index: <a href=\"\/en\/journel\/\">Journal<\/a>.<\/p>\n<p>Write the review risk in one paragraph before you pick a process. Payments, location, and anything that could look like surveillance raise the cost of a moving promise. A chauffeur app and a found-phone game fail review in different ways. Name the risk, then choose fixed or agile. If you cannot name it, you are not ready for a date. You are ready for a TestFlight and a written kill rule. Quote materials still apply: <a href=\"\/en\/journal\/what-to-send-when-requesting-a-software-quote\/\">what to send for a quote<\/a>.<\/p>\n<h2>Frequently asked questions<\/h2>\n<h3>Can I be agile after a fixed version one?<\/h3>\n<p>Yes. That is the usual path. Lock the first listing. Learn in 1.1. Do not learn by rewriting the public promise every week.<\/p>\n<h3>Does Apple require agile?<\/h3>\n<p>No. Apple requires a binary, a listing, and truthful metadata. Your internal process is your problem.<\/p>\n<h3>What if stakeholders keep adding screens?<\/h3>\n<p>Put them on the not-now list with a date. If the list is empty, you do not have a process. You have a queue of wishes.<\/p>\n<h3>Should AI features be in the fixed list?<\/h3>\n<p>Only if you can evaluate them and explain them on the listing. Otherwise they are TestFlight. Briefing help: <a href=\"\/en\/journal\/how-to-brief-an-ai-app-studio\/\">how to brief an AI app studio<\/a>.<\/p>\n<h3>Where do I start the build sequence?<\/h3>\n<p>Use <a href=\"\/en\/journal\/from-idea-to-app-store-realistic-build-sequence\/\">the realistic build sequence<\/a>, then pick the contract style on this page.<\/p>\n<\/div>\n<p><!-- .vgblk-rw-wrapper --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For a first App Store release, choose fixed scope when review risk is high and agile when the first job is still being discovered.<\/p>\n","protected":false},"featured_media":988436,"template":"","croncode_category":[48],"croncode_author":[47],"class_list":["post-988435","croncode_post","type-croncode_post","status-publish","has-post-thumbnail","hentry","croncode_category-studio","croncode_author-yusufhan-sokur"],"_links":{"self":[{"href":"https:\/\/croncodestudio.com\/en\/wp-json\/wp\/v2\/croncode_post\/988435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/croncodestudio.com\/en\/wp-json\/wp\/v2\/croncode_post"}],"about":[{"href":"https:\/\/croncodestudio.com\/en\/wp-json\/wp\/v2\/types\/croncode_post"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/croncodestudio.com\/en\/wp-json\/wp\/v2\/media\/988436"}],"wp:attachment":[{"href":"https:\/\/croncodestudio.com\/en\/wp-json\/wp\/v2\/media?parent=988435"}],"wp:term":[{"taxonomy":"croncode_category","embeddable":true,"href":"https:\/\/croncodestudio.com\/en\/wp-json\/wp\/v2\/croncode_category?post=988435"},{"taxonomy":"croncode_author","embeddable":true,"href":"https:\/\/croncodestudio.com\/en\/wp-json\/wp\/v2\/croncode_author?post=988435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}