I don't think it's necessarily 30 seconds, or 10 minutes. Have you ever pressed the token and then pressed it again immediately after? The code is always unique, as though it follows an algorithm unique to YOUR token and will never use the same code twice.

I am in support of a phone-based app. I am so paranoid of losing my token, and despite being very careful, it has happened to me before. (I found it, but it was still a minor annoyance)... It is especially likely if you choose not to play for a few weeks. I do not believe there is a time limit for a code, even if SE says there is. The 'time limit' that is imposed by Blizzard is on the mobile app... a small bar runs out of time, and then generates a new code if you don't input it in time.

I don't think the code is necessarily generated based on time. Even the best watches sometimes fall out of speed and need to be synced. An isolated battery-operated clock inside a small plastic device isn't going to stay precise for years, and definitely not down to 30 seconds! Even computers, consoles and watches need to be adjusted every now and then. The tokens are far too cheap. I'm 99% positive that it works using an algorithm linked specifically to YOUR key.