Update: I open-sourced Goofy!
I am really no fan of this kind of web apps. But Facebook doesn't expose all their features in the API and the XMPP-support is too basic (I want stickers and group chats and all that other fancy stuff). With my approach, the app can do everything that the real Facebook Messenger can, because it is the Facebook Messenger. But as soon as Facebook changes the smallest bit of their code my app could break. This is why my app pulls the JS from a server every time it is launched. This makes it easy for me to implement features and respond to changes without updating the app itself.