{"id":535,"date":"2017-09-15T03:40:23","date_gmt":"2017-09-15T11:40:23","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/mobilecenter\/?p=535"},"modified":"2019-02-16T15:30:45","modified_gmt":"2019-02-16T22:30:45","slug":"guest-blog-fixing-disasters-asap-with-instant-updates","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/appcenter\/guest-blog-fixing-disasters-asap-with-instant-updates\/","title":{"rendered":"Guest Blog | Fixing Disasters ASAP with Instant Updates"},"content":{"rendered":"<p><em>Visual Studio Mobile Center is now Visual Studio App Center. <a href=\"https:\/\/blogs.msdn.microsoft.com\/vsappcenter\/introducing-visual-studio-app-center\/\" rel=\"noopener\" target=\"_blank\"><em>Learn more here<\/em><\/a>.<\/em>\n&nbsp;\n<em>This is a special guest post from Michael Hayes, co-founder of <a target=\"_blank\" href=\"https:\/\/addjam.com\/\" rel=\"noopener\"><em>Add Jam<\/em><\/a> and <a target=\"_blank\" href=\"http:\/\/pocketleap.com\/\" rel=\"noopener\"><em>Pocket Leap<\/em><\/a>.<\/em><\/p>\n<p>Web developers have one big advantage over mobile developers: when users report a bug in the latest update, if we react fast we can push out a fix in no time, and on the next page refresh users will instantly see the fix. For mobile developers, shipping a bug has much larger implications, forcing us to play the waiting game with store review processes. Approval turnaround times have gotten better, but it still means getting fixes to our users doesn\u2019t happen in seconds, it takes days or weeks.<\/p>\n<p>Like many developers, we build mobile and web experiences, and we know this struggle all too well. Bugs happen. It\u2019s not a matter of if, but when, and most importantly, how bad. We know that one negative mobile experience can mean the difference between a loyal user and an uninstall. As one of a two-man founding and development team, launching for a time-sensitive, <em>paying<\/em> customer is always stressful\u2014but if we encounter a bug or an issue? Historically, this would equal one thing: disaster, from calling the customer to apologize to junk food-fueled late night coding sessions, to countless pleading emails requesting an expedited store review.<\/p>\n<p><strong>Now, though, the app store review waiting game is a thing of the past for us, thanks to the power of CodePush<\/strong>. We ship continuous updates behind-the-scenes, fixing issues before our customers or users even know there\u2019s an issue; they just see an amazing user experience.<\/p>\n<h3>Going from Disaster to Rave Reviews: Turing Fest 2017<\/h3>\n<p>Scotland\u2019s biggest tech conference, <a target=\"_blank\" href=\"https:\/\/www.turingfest.com\/\" rel=\"noopener\">Turing Fest 2017<\/a>, selected our CMS for native mobile apps, <a target=\"_blank\" href=\"http:\/\/pocketleap.com\/\" rel=\"noopener\">Pocket Leap<\/a>, for its official conference app to provide anytime, anywhere access to conference sessions and agendas for 1,000+ international attendees and 50+ notable speakers.<\/p>\n<p>We built and submitted the app to the iOS App Store and Google Play Store for approval with an extremely useful feature missing: we failed to display conference speakers\u2019 presentation times. Not a critical bug, but not the experience we wanted.<\/p>\n<p>Pre-CodePush, adding this minor, yet essential, change would require rebuilding and resubmitting to each store for review. Since the two-day conference had already started, we would have had no hope of an update in time.<\/p>\n<p>With CodePush and React Native, it was a five minute fix-and-deploy, and users immediately saw presentation times across platforms. Conference attendees didn\u2019t realize the initial mistake, due to one fundamental difference:<\/p>\n<blockquote><p>CodePush updates are silent and take place in the background, automatically displaying on our users\u2019 devices without prompts or app updates required.<\/p><\/blockquote>\n<p>Instead of waking up to negative user\u2014and paying client\u2014feedback, we saw conference attendees sharing their love for the app on Twitter.<\/p>\n<p><img decoding=\"async\" src=\"\" alt=\"Before and after pushing our instant fix.\" width=\"800\" class=\"aligncenter size-large wp-image-1005\" \/><\/p>\n<h3>Summary: CodePush = Less Stress, Instant App Updates, and Happier Users<\/h3>\n<p>Traditional release processes\u200a\u2014\u200abuilding a binary and submitting to the stores\u200a\u2014\u200aforce us to rely on users downloading updates. Automatic app updates are great, but we rarely find 100% of our users with the latest versions of our apps. Given this reality, CodePush is quickly becoming critical to our development process.<\/p>\n<p>We had a proof of concept up in running in 30 minutes. Our first step was to add the react-native-code-push dependency to our project. Running react-native link react-native-code-push asked us some simple questions to guide us through set up (asking us for API keys, for example). After that, it automatically created the necessary files, and all we needed to do was add a couple of lines of code to our Root.js.<\/p>\n<p><code>import codePush from 'react-native-code-push'\n@codePush\nexport default class Root extends Component {\n...<\/code><\/p>\n<p>Really simple to get up and running and, after a day\u2019s work, we had fully integrated the CLI with our CMS platform. That means going forward, every app we create is a distinct CodePush project, and we can push the same instantaneous updates to our users at any time.<\/p>\n<p><img decoding=\"async\" src=\"\" alt=\"Our Turing Fest 2017 app in action.\" width=\"800\" class=\"aligncenter size-large wp-image-1015\" \/><\/p>\n<p>As a co-founder and a developer, I can\u2019t recommend CodePush enough. If you\u2019re working on a React Native project, you\u2019ll find it essential too; it\u2019s simple to set up and use, and it removes a ton of stress.<\/p>\n<h3>More about\u00a0CodePush<\/h3>\n<p><a target=\"_blank\" href=\"http:\/\/microsoft.github.io\/code-push\/\" rel=\"noopener\">CodePush<\/a> is a service in <a target=\"_blank\" href=\"https:\/\/www.visualstudio.com\/vs\/mobile-center\/\" rel=\"noopener\">Visual Studio Mobile Center<\/a> that allows developers to deploy React Native app updates directly to users\u2019 devices, bypassing the public app store review process. Developers can easily fix bugs or add small features to JavaScript code, eliminating the need to rebuild and resubmit apps for review.<\/p>\n<p><em>If you haven\u2019t already, <a target=\"_blank\" href=\"https:\/\/mobile.azure.com\/login\" rel=\"noopener\"><em>create your Visual Studio Mobile Center account<\/em><\/a>, connect your first app, and start shipping better apps now.<\/em><\/p>\n<p><em>Have an account? <a target=\"_blank\" href=\"https:\/\/mobile.azure.com\/login\" rel=\"noopener\"><em>Log in<\/em><\/a> and let us know what you\u2019re working on!<\/em><\/p>\n<p><strong>About the\u00a0Author<\/strong><\/p>\n<p><em>Michael is co-founder of <a target=\"_blank\" href=\"https:\/\/addjam.com\/\" rel=\"noopener\"><em>Add Jam<\/em><\/a>, working from the heart of Glasgow to turn ideas into iOS and Android apps. Add Jam makes mobile more affordable and accessible to tourism businesses with <a target=\"_blank\" href=\"http:\/\/pocketleap.com\/\" rel=\"noopener\"><em>Pocket Leap<\/em><\/a>, a CMS for fully native apps. If you\u2019re ever in Scotland, Michael is always keen to meet for a beer. Find Michael on <a target=\"_blank\" href=\"https:\/\/twitter.com\/_mdhayes\" rel=\"noopener\"><em>Twitter<\/em><\/a> and <a target=\"_blank\" href=\"https:\/\/github.com\/addjam\" rel=\"noopener\"><em>GitHub<\/em><\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio Mobile Center is now Visual Studio App Center. Learn more here. &nbsp; This is a special guest post from Michael Hayes, co-founder of Add Jam and Pocket Leap. Web developers have one big advantage over mobile developers: when users report a bug in the latest update, if we react fast we can push [&hellip;]<\/p>\n","protected":false},"author":42,"featured_media":38034,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[16],"tags":[10],"class_list":["post-535","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobiledev","tag-guest-post"],"acf":[],"blog_post_summary":"<p>Visual Studio Mobile Center is now Visual Studio App Center. Learn more here. &nbsp; This is a special guest post from Michael Hayes, co-founder of Add Jam and Pocket Leap. Web developers have one big advantage over mobile developers: when users report a bug in the latest update, if we react fast we can push [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/posts\/535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/comments?post=535"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/posts\/535\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/media\/38034"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/media?parent=535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/categories?post=535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/appcenter\/wp-json\/wp\/v2\/tags?post=535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}