Dark Sky Blog Developers Help

By on .

We received an email…

“I heard about Forecast, but I couldn’t find it in the App Store. How do I get it?”

“You don’t get it from the App Store: just go to http://forecast.io/ on your phone, and you’ll be given instructions on how to download it.”

“Wow, this is great! I didn’t know you could get apps outside the App Store!”

We’ve had conversations like this dozens of times since launching Forecast. They usually comes from people who have an iPhone but aren’t particularly tech savvy, and I’m fairly certain none of them will ever know that Forecast is actually a web app. To them, it’s just an app you install from the web.

And they’re right: if it looks and feels like an app, and lives on your home screen, it’s an App. With a capital “A.”

I’d go as far as to say the best weather App in the world right now is a web app. I may be biased, of course, but the fact that Forecast is even a contender is kind of a big deal. It raises the question: why aren’t there more high quality mobile web apps that have the look, feel, and performance of their native counterparts?

I don’t think the reason is a technical one. Granted, some apps must be native: OpenGL-based games, for example, or apps that access hardware capabilities that are not yet exposed to the browser (a shrinking list); but I don’t buy the argument that native SDKs allow you to create interfaces that are inherently better, smoother, more dynamic — or more delightful — than what is possible via HTML5. It’s 2013, and mobile browser technology has advanced tremendously in the past few years: hardware accelerated transforms and animations have made it easy to create perfectly smooth, jitter-free, interfaces, and there is no question in my mind that CSS is a more powerful way to layout dynamic content than Interface Builder.

So why does it feel as if the average native app is so much better than the average web app?

The reason, I think, is this: it’s easy to make web pages. Anyone with a text editor and a browser can do it. You can learn the basics and actually publish a website in a weekend, as an amateur, without much trouble. Making a native iOS app, by contrast, is difficult and time consuming: you have to pay Apple $99; you have to download XCode and learn how to use it, along with a strange language called Objective-C; you have to create, sign, and upload certificates; you have to compile your code and figure out how to run it on your device; and you have to publish it for others to see, which requires navigating all the rules, regulations, and technical issues surrounding the App Store. All these things make for a large barrier to entry that just doesn’t exist on the web.

As a result of all this, you're left with a sort of selection bias: the developers who goes through all the trouble to learn how to make native apps are, on average, much more serious about it than the average person is about making web pages. It’s no surprise that the quality of their work is also, on average, much higher.

And this, in turn, leads many serious developers to abandon the web in favor of native app development. Even so, most iOS apps are still pretty crummy! It is extremely difficult to produce a quality app. It takes a tremendous amount of skill, discipline, and sheer will to turn an idea into an app that is both attractive and a pleasure to use. This is true no matter what technology it is built on.

With that in mind, I'd like to dedicate the rest of this post to outlining various things we've learned while developing Forecast, in hopes that it'll encourage others to build great mobile experiences.

Some lessons we've learned, in no particular order…