In their presentation at Breaking Development in Orlando FL Ben Galbraith & Dion Almaer provided an overview of mobile Web vs. native considerations from the perspective of a major online retailer. Here's my notes from their talk on Web vs. Apps.
- Its a great time to be a developer (cool new platforms and devices) but at the same time we all have legacy codebases we need to deal with it.
- Mobile gives us an opportunity to re-envision what our technology can be. Many mobile teams are able to fly under the radar and get exciting things out.
- But with all this opportunity comes choice and one of the most talked about choices these days is native apps vs. Web. Developers coming from the Web often turn to Web technologies first and foremost.
- At Walmart people using the native app were loyal customers and often interacting in stores. The Walmart mobile website had a different set of users: people coming from search, looking for in and out experiences.
- Where does the idea that the Web will inevitably win come from? Microcomputers used to be very diverse but then one platform one (windows) won. There was one platform to write software for and it wasn't getting better.
- It was the Web browser that changed the game. People were able to go the Web and get things done instead of going to the store to buy software, install it, and finally experience it.
- Electronic distribution and ease of installation are relatively even between native apps and the Web. Native apps win in terms of experience.
- Web is about reach. That's how you get to the largest amount of users. But native apps win with engagement. Usage of native apps is rivaling TV viewing.
- In two years, Angry Birds crossed the number of people who have played Mario Brothers. Draw Something took nine days to reach one million users.
- Today technology start-ups are focusing on native applications over Web sites and its working.
Hybrid Solutions
- The web is still a reach platform but it is reach to get you to other platforms where you might not build native applications.
- Yet native applications feel wrong: they shut new players out, they add to release management, QA, and costs.
- So developers want to simply wrap Web technology within native apps.
- Web interfaces wrapped in a native shell expose lots of janky edge cases that highlight where native polish is missing.
- Android variants can quickly wipe out any cross-platform gains you get from created cross-device Web code.
- A lot of champions of native HTML technologies have moved away from them. Even companies like Google have embraced native applications.
- Does this mean you don't want a mobile Web site? No. Different audiences come from the Web and you want to be ready for them. Links go to web pages, and you want those links.
- The Web also lets you reach platforms you'll never build native applications for.
- The Web has a huge advantage with continuous deployment and A/B testing. Native platforms are a big step backward.
- With node.js you can have a fully continuous stack that bring the front and back-end closer together.
- Hybrid apps can be used effectively. But you need to be judicious about how and where you integrate HTML code into native apps.
- Walmart used a hybrid solution for their checkout flow because they really wanted to make sure they can make updates & changes to a critical flow.
- But with a central HTML solution for something like checkout, all the different platform teams became reliant on a central team's roadmap. This created challenges for each specific team's requirements. At the same time, any change to the platform rolls out everywhere without work by every team.
The Future
- Dynamic apps. Titanium allows you to create dynamic apps across platforms but it comes with tradeoffs like waiting for APIs to be implemented. The idea behind this platform is still really interesting. Pixate is similar -it allows you to use CSS to style native applications. You can have shared & platform specific styles. These services bring Web development advantages to native app platforms.
- Google's change to combine the Android and Chrome teams under one leader should help make the Web better on the Android platform. Watch this space.
- Blink is Google's WebKit fork. They have been trying to innovate quickly but have been held back by Webkit commits. Now changes can come faster.
- Android has a mapping component that used to be part of the OS but now is updated independently. If this can happen with WebViews as well, it would be great.
- There's no silver bullet. The trade-offs that make sense for you maybe different than the ones that matter to others.