How many generations back should I support? is a question that has always been an issue for developers.
From the bad old days when Internet Explorer 6 ruined everybody’s life, through to the rise of more devices than anyone could ever count, the complimentary client statement has always been an issue for developers too: The website looks all funny to me / is broken / is showing bits all over the place.
Oh rapture! Nothing blows out a project budget like hours spent up to your ears in hacks or work-arounds because the CEO is still on Windows XP with IE 9, or absolutely swears by their Blackberry.
For this reason, I specify what browsers I’m willing to support. I keep this pretty general, usually version number X+ for Microsoft (Edge and Internet Explorer) and version X+ for Webkit or other standards-compliant browsers. Anything outside this will require extra hours quoted, basically to acknowledge that this will take much more development time to achieve.
I also specify that browser support refers to the website being not broken as opposed to identical across browsers. Basically the site’s components will all be in more or less the same place, and look more or less the same. Unfortunately there has never been a way to guarantee that a site will look identical and with the need for responsive websites, this is the case more than ever.
So to return to the original question – how many generations back should I support? This is going to vary according to things like the target audience of the site.
I use general browser statistics, usually geo-focused on Australia, to work out how to achieve the best user coverage : reasonable development time ratio. This changes with time, but for me it’s generally the current version and the one before for desktop browsers, and maybe a little more for mobile devices.
In addition to this, I’ll generally try to work to make sure that the site is as not broken as possible for older browsers too. This includes using prefixing for features after the current versions of a browser have abandoned them, or updated to a new syntax.
There are, however, always going to be great new features that will cause older browsers to entirely break your site. If these are well supported in modern browsers it’s definitely time to abandon support for the older ones.