At first (in late 2012), we tried every single frontend framework available - including Backbone, Angular, Spine, and SproutCore (which ended up becoming Ember) - but they were all too slow for what we were doing. React wasn't yet a thing, and the only library that we found that worked fast enough was Knockout.js, so we went with that in the early days.
Since then, we've refactored 90%+ of the app (which is now approaching a million lines of code) to React/Flux/Immutable.js, with the remaining 10% not far behind.
We're hoping to post a lot more about our full stack in the future, especially since we're rolling out our dynamic website hosting stack worldwide (there's a lot of interesting S3/Lambda/CloudFront/Fastly goodies in there).
The biggest challenge is probably dealing with the huge array of different sites that people build, which range from small one-page marketing sites to huge 1000+ page dynamic web apps. Since Webflow is not template-based (like Weebly, Wix, Squarespace, etc) but rather allows designers to build up a site from scratch (including defining their own DOM nodes and CSS classes), we have to create JSON-based abstractions that need to work in a backwards-compatible way even as we add new features to Webflow.