I wrote an app recently and deployed it to Heroku. It is nice that it is so easy to do. That said, its behavior is certainly different in a multi-user environment from how it behaves in a notebook. I was being clever to cache some moderately expensive i/o, so that it would only be performed when widget changes require it.
Alas, of course, Heroku does not spin up a new instance for each connection. So this cacheing actually just causes surprising behavior more quickly.