{"id":556,"date":"2015-07-27T15:49:29","date_gmt":"2015-07-27T15:49:29","guid":{"rendered":"https:\/\/ionic.io\/blog\/?p=556"},"modified":"2015-12-16T19:36:38","modified_gmt":"2015-12-16T19:36:38","slug":"the-web-is-too-low-level","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level","title":{"rendered":"The Web is too Low-Level"},"content":{"rendered":"<p>One of the reasons we built Ionic was to provide the missing &#8220;Web SDK&#8221; for mobile apps built in the browser.<\/p>\n<p>Before Ionic, it was just too hard to build mobile apps that looked and felt native in the browser. There was too much black magic needed to make an app perform well, and too much work and skill needed to implement the UI concepts and styles from every native platform developers wanted their apps to run on. Developers had to build everything from scratch, and it showed.<\/p>\n<p>A lot of people think pure native development is lower level than web development. In some ways that&#8217;s true: html, javascript, and CSS are technically higher abstractions above, say, Objective-C and the hardware-accelerated rendering layer. Unfortunately, that&#8217;s where the abstractions end. Unlike iOS or Android, the web stack does not give us any specific components or features for building mobile apps, and tools like Cordova\/Phonegap merely give us ways to communicate with the native layer (necessary, but not sufficient).<\/p>\n<p>In that sense, web development is kind of like drawing directly to a canvas. We have to build the shapes, styles, and interactions ourselves.<br \/>\n<!--more--><\/p>\n<p>This morning I wrote a longer post talking about how the web stack is actually too low-level for us to build great things with it on its own, and why developers should use frameworks like Ionic to build apps for the specific platforms they are targeting.<\/p>\n<p>I think it&#8217;s a good read for anyone that questions whether the web stack can make great apps, or just want to understand how all the various application abstractions work.<\/p>\n<p><a href=\"https:\/\/medium.com\/@maxlynch\/the-web-is-too-low-level-7a4ea4933366\">Read &#8220;The Web is too Low-Level&#8221; on Medium<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the reasons we built Ionic was to provide the missing &#8220;Web SDK&#8221; for mobile apps built in the browser. Before Ionic, it was just too hard to build mobile apps that looked and felt native in the browser. There was too much black magic needed to make an app perform well, and too [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","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":[3],"class_list":["post-556","post","type-post","status-publish","format-standard","hentry","category-all","tag-ionic"],"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>The Web is too Low-Level - 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\/the-web-is-too-low-level\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Web is too Low-Level\" \/>\n<meta property=\"og:description\" content=\"One of the reasons we built Ionic was to provide the missing &#8220;Web SDK&#8221; for mobile apps built in the browser. Before Ionic, it was just too hard to build mobile apps that looked and felt native in the browser. There was too much black magic needed to make an app perform well, and too [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-27T15:49:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-12-16T19:36:38+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=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level\"},\"author\":{\"name\":\"Max Lynch\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e\"},\"headline\":\"The Web is too Low-Level\",\"datePublished\":\"2015-07-27T15:49:29+00:00\",\"dateModified\":\"2015-12-16T19:36:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level\"},\"wordCount\":284,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"keywords\":[\"Ionic\"],\"articleSection\":[\"All\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level\",\"url\":\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level\",\"name\":\"The Web is too Low-Level - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"datePublished\":\"2015-07-27T15:49:29+00:00\",\"dateModified\":\"2015-12-16T19:36:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/the-web-is-too-low-level#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Web is too Low-Level\"}]},{\"@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":"The Web is too Low-Level - 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\/the-web-is-too-low-level","og_locale":"en_US","og_type":"article","og_title":"The Web is too Low-Level","og_description":"One of the reasons we built Ionic was to provide the missing &#8220;Web SDK&#8221; for mobile apps built in the browser. Before Ionic, it was just too hard to build mobile apps that looked and felt native in the browser. There was too much black magic needed to make an app perform well, and too [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level","og_site_name":"Ionic Blog","article_published_time":"2015-07-27T15:49:29+00:00","article_modified_time":"2015-12-16T19:36:38+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":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level"},"author":{"name":"Max Lynch","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/91f360cffbd804a464b0c4a87b5c5f1e"},"headline":"The Web is too Low-Level","datePublished":"2015-07-27T15:49:29+00:00","dateModified":"2015-12-16T19:36:38+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level"},"wordCount":284,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"keywords":["Ionic"],"articleSection":["All"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level","url":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level","name":"The Web is too Low-Level - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"datePublished":"2015-07-27T15:49:29+00:00","dateModified":"2015-12-16T19:36:38+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/the-web-is-too-low-level"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/the-web-is-too-low-level#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"The Web is too Low-Level"}]},{"@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\/556","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=556"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/556\/revisions"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}