{"id":2168,"date":"2018-04-09T22:55:38","date_gmt":"2018-04-09T22:55:38","guid":{"rendered":"https:\/\/ionicframework.com\/?p=2168"},"modified":"2018-04-17T17:37:03","modified_gmt":"2018-04-17T17:37:03","slug":"update-on-ionic-view-for-ios","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios","title":{"rendered":"Update on Ionic View for iOS"},"content":{"rendered":"<p>As some of you may have heard, the Ionic View app was removed from the app store by Apple last week and is still unavailable in the store as of today (it is still available on Android, of course). In the interest of transparency, I want to update the community on what is going on and our thoughts on how we move forward.<\/p>\n<p>The story starts two weeks ago when we received an Apple App Store rejection for our Ionic View app, an app that helps developers test their Ionic apps as they build them.<\/p>\n<p>Initially, the rejection was for the use of a QR code to allow developers and testers to quickly load an app. We removed the QR code and disabled public app testing, and resubmitted. A week later, our app was rejected again and removed from the store by Apple due to something we missed as we fixed the QR code issue. We fixed that mistake and resubmitted but at that point the app was already out of the store.<\/p>\n<p><!--more--><\/p>\n<p>Today, a week after the last resubmission, we received notice that our app violates a different part of the App Store ToS, specifically 2.5.2 that specifies &#8220;Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code, including other apps.&#8221; This is a grey area in the ToS that we have always felt in compliance with, considering Ionic View merely loads web content like a custom web browser, and is incapable of executing any additional native code outside of the binary we ship to the app store. In fact, later sections of the App Store ToS explicitly mention that loading outside code is okay as long as it uses WebKit or JavaScriptCore, though the developer testing nature of Ionic View is admittedly different from the traditional use case of an app loading web content updates.<\/p>\n<p>After over two years of no problems, this was a surprise to us!<\/p>\n<p>We have been in contact with other cross-platform tooling companies, even those not based on Cordova or WebViews, and they have received similar rejections or threats of rejection from Apple. This indicates that Apple is changing their policy against developer testing apps in general, and if that is the case, we expect that all cross-platform tooling companies will have their testing apps removed from the app store soon.<\/p>\n<p>To be clear, this issue <em>does not<\/em> mean that Apple is rejecting hybrid or JavaScript apps. Rather, it is isolated to developer testing apps. Any claims to the contrary are simply inaccurate and we have received <em>zero<\/em> reports from the Ionic community that their apps are being rejected.<\/p>\n<p>We are working with Apple to find a solution. In the meantime, we are working on a way forward that lets us achieve the main goal of View to make it easier for developers to build apps quickly, while being compliant with App Store guidelines.<\/p>\n<p>Thank you for your understanding, and stay tuned for updates as we receive them from Apple.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As some of you may have heard, the Ionic View app was removed from the app store by Apple last week and is still unavailable in the store as of today (it is still available on Android, of course). In the interest of transparency, I want to update the community on what is going on [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"","publish_post_category":"","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2168","post","type-post","status-publish","format-standard","hentry","category-all"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Update on Ionic View for iOS - Ionic Blog<\/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:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Update on Ionic View for iOS\" \/>\n<meta property=\"og:description\" content=\"As some of you may have heard, the Ionic View app was removed from the app store by Apple last week and is still unavailable in the store as of today (it is still available on Android, of course). In the interest of transparency, I want to update the community on what is going on [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-09T22:55:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-17T17:37:03+00:00\" \/>\n<meta name=\"author\" content=\"Max Lynch\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@maxlynch\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Max Lynch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios\"},\"author\":{\"name\":\"Max Lynch\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e\"},\"headline\":\"Update on Ionic View for iOS\",\"datePublished\":\"2018-04-09T22:55:38+00:00\",\"dateModified\":\"2018-04-17T17:37:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios\"},\"wordCount\":519,\"commentCount\":43,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"articleSection\":[\"All\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios\",\"url\":\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios\",\"name\":\"Update on Ionic View for iOS - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"datePublished\":\"2018-04-09T22:55:38+00:00\",\"dateModified\":\"2018-04-17T17:37:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update on Ionic View for iOS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e\",\"name\":\"Max Lynch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg\",\"caption\":\"Max Lynch\"},\"description\":\"CEO\",\"sameAs\":[\"http:\/\/twitter.com\/maxlynch\",\"https:\/\/x.com\/maxlynch\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/max\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Update on Ionic View for iOS - Ionic Blog","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:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios","og_locale":"en_US","og_type":"article","og_title":"Update on Ionic View for iOS","og_description":"As some of you may have heard, the Ionic View app was removed from the app store by Apple last week and is still unavailable in the store as of today (it is still available on Android, of course). In the interest of transparency, I want to update the community on what is going on [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios","og_site_name":"Ionic Blog","article_published_time":"2018-04-09T22:55:38+00:00","article_modified_time":"2018-04-17T17:37:03+00:00","author":"Max Lynch","twitter_card":"summary_large_image","twitter_creator":"@maxlynch","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Max Lynch","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios"},"author":{"name":"Max Lynch","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e"},"headline":"Update on Ionic View for iOS","datePublished":"2018-04-09T22:55:38+00:00","dateModified":"2018-04-17T17:37:03+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios"},"wordCount":519,"commentCount":43,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"articleSection":["All"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios","url":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios","name":"Update on Ionic View for iOS - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"datePublished":"2018-04-09T22:55:38+00:00","dateModified":"2018-04-17T17:37:03+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/update-on-ionic-view-for-ios#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Update on Ionic View for iOS"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e","name":"Max Lynch","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/05\/max-avatar-150x150.jpg","caption":"Max Lynch"},"description":"CEO","sameAs":["http:\/\/twitter.com\/maxlynch","https:\/\/x.com\/maxlynch"],"url":"https:\/\/ionic.io\/blog\/author\/max"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=2168"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2168\/revisions"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=2168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=2168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=2168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}