I've been faced with a similar design choice on my current project and it's not as simple as "adding a layer" or progressively developing.<p>If you plan to implement what is more traditionally a native app rather than a typical website then your javascript use gets heavy enough that #! fragments become necessary.<p>Especially on app engine as you have no ability to write to a non-db file.