There's 2 fundamental problems with most 'develop live in the browser' systems that i've seen. Note that the LightTable + ClojureScript combo is an exception from this, even though that requires writing your app in a certain way.
My general argument is not that it's impossible to do this. It is that there's a lot more complexity to exisiting JS apps, and for this to work as flawlessly as all those demos say, Apps need to be written with hot code swapping in mind.
The mechanism itself for redefining a piece of code is not always so easy. Let's say your app is a browserify build. Sure, if you're redefining one (public) method on an object, you can find the object and swap out the method on the obj itself, or on its prototype. But how do you go about with more advanced patterns? Maybe a module is exposing 1 public method, that has 3 methods internally. That method is then passed as a value into other modules. Now all of a sudden, modules not only need to re-define