I am the leader developer of ICOWallet team. From my point of view, the ChainStore part of bitsharesjs is poorly designed so we need to replace with our own. The points are:
1 The return value of APIs of the form getXXXX is a 'try and guess correct' thing (sync one), which should be replaced with ( same form of ) promise apis.
2. The tests are incomplete and the code is hard to argue and review.
3. For the cache thing, we need some carefully designed mechanism to reduce the network throughput . IMHO, if a fully api node can reduce the memory usage, then in theory , a smart phone is capable for a "reduced full api node" which is used only with concerned accounts. That is a big thing. But for now, we plan to do some small improvements: market data / account history with diff data on wire . BitsharesUI has some code for diff data on wire for market data, it should be in bitsharesjs. Also, we plan to use HTML5 storage like localstorage / indexedDB to save persistent data from blockchain. (For compatible with Nodejs, that is another story.)
And yes, I think there are two ways to improve the architecture which is more valuable now:
1. use and improve alt's backend, drop many components in bitsharesjs.
2. do something like the discussion in this post above to improve the bitsharejs lib to make it a better one.
with any direction done, we can then do a better UI but I think it will be much easier.
we don't plan to open-source the UI part for ICOWallet in the near future( but maybe 1 or 2 years later), but once we have improved the bitsharesjs lib , we will make it opensource.
@bitcrab suggested us to apply a worker for this part, but I don't think we need so much work to apply a worker (I think the community will see a better lib in two months, however as we have some other works, it could be incomplete for a whole UI but it should be a good reference for community to work on). If anyone can do some "block to object generating" like in C++ part in javascript, that is a valuable worker proposal (the big thing mentioned above).
In short, we need a better API lib layer to talk to backend first, then it is valuable to do a better reference UI .