Flash is certainly still a contentious issue in the web development community. Many people believe that Flash is the past, and is in decline. Others firmly believe Flash is the future of writing applications for multiple screens, be they mobile, tablet, desktop or even TV.
Both sides have smart, reasonable arguments about the technical aspects (or deficiencies) of Flash. However, one thing I haven’t really seen argued around Flash is something that many nerds instinctively feel; that the experience for users on a touchscreen is going to be sub-par.
I believe lots of that experience breakdown comes down to how interacting with a flash object in a page on any touchscreen device would badly break the mental model for actions already established in a users’ head. Here’s why.
Lots of Flash content could easily be described as badly-behaved. That is, there is no standard model of behaviour that a Flash object adheres to. Whatever the Flash developer wants in that object, that’s what goes. Do you want your object to scroll up and down with its own custom scrollbar? Do you want the cursor to disappear? Do you want rollovers to trigger an action? No problem!
This freedom from standard conventions means that everything that happens in a Flash object box needs to be separated out by the browser. Think of it like an embedded mini-webpage, where all the normal rules for interaction don’t apply.
This isn’t really an issue on the desktop (maybe because we’re used to it), but it certainly is an issue on a touch-based device. The reason is that many crucial actions (like scrolling, or zooming) can be initiated from anywhere on the page. You can start a pinch zoom from any 2 points on the screen, and as long as your fingers are moving together relative to each other, it will zoom. A page scroll is even simpler; it’s a swipe that can be as long (or short) as you like, and it can start (or end) anywhere on the screen.
Uniformity in those actions is critical to the user experience on the web. It’s one of those things about the iPad that makes web-browsing an extremely pleasurable experience. I believe that the occurrence of Flash objects would break this uniformity.
Consider scrolling; what happens to a Flash object that has a scroll initiated inside of it? Does the object scroll? Or does the webpage around the object scroll? What likely occurs is it becomes a splitting point; half your users may have wanted the page to scroll, the other half may have wanted the content in the object to scroll. Either way, the overall experience suffers for half your users. That’s bad.
Another example is gesture overlap. Let’s assume flash objects can scroll via gesture — what happens if your scroll begins inside a Flash object, but then strays outside? Does it stop recognising as an object-specific motion? Does it carry on?
These kinds of interaction inconsistencies would be rife with the introduction of Flash. Other examples include:
- Why can’t I zoom inside this object?
- Why can’t I long-press on this link to open it in a new tab?
- Why can’t I long press on this image to save it?
- Why can’t it find the in-page text I’m searching for?
- Why can’t I select this text?
The bottom line is that Flash would split the user behaviour model on touchscreen devices; one set of rules for webpages, another for Flash objects. Considering most users would not know the difference between the two, the end result would be user frustration. Even worse, user frustration that’s very difficult to articulate —you don’t know exactly why, but it just feels bad.
There are many reasons why Apple does not include Flash on iOS, but I can’t help but think that these kinds of user interaction problems are much more weighty & difficult to solve than the technical. That other device makers are including Flash in their experience without fully thinking through these issues serves as an interesting bellweather toward their overall user experience.