With the release of the iPhone even Apple itself claimed that Apps we're not important because the web would take over. Since then I hear this same argument regurgitated from time to time. Web apps are the future. Native apps will never be flexible enough. Well, this argument is correct. But most of the people using it are really wrong and they don't always understand the argument itself.
Web applications will, for the foreseeable future, be the most cutting edge and flexible way to develop functionality. They will surpass anything native clients do very soon. This is because cloud computing will make computing a lot more flexible and less reliant on hardware.
But these web apps will only be functionality. User interfaces in the web will lag behind tremendously. With HTML 5 and faster browsers UI's will become more responsive and more complex. But user interfaces online, just like native app user interfaces, must be disconnected from the functions themselves so that errors or problems do not interfere with the users experience of the application. In other words, if your Internet connection times out the user interface can't just stop. That would be similar to a Windows 95 blue screen and user would never be able to rely on the applications.
The solution, which is commonly used today, is to separate the user interface from the functions and simply run them asynchronously with user interfaces providing feedback while waiting for the servers to respond. No matter the issue with functions the user interface can keep users in the loop and provide them with the feeling of control.
Why is this different from native apps? It's not. Native apps on devices such as the iPhone are quite often just interfaces for online services. And as such they are not different from online user interfaces. This is why native apps will not go away. native interfaces will continue to be much more responsive for years to come, providing the user the sense of control we all want from our apps.