I've launched the beta of a major update to Reviewable! The changes are mostly internal but pave the way for the upcoming UI redesign. The beta is running on https://beta.reviewable.io and I'm redirecting a small but increasing portion of traffic there to flush out any bugs. Please report any issues you encounter and feel free to visit the beta directly if you want to be extra helpful. Besides the URL, you can tell you're on the beta version by the header logo:
So what's in this update and why did it take so long? It's basically a rewrite of the client's internal data model, affecting tens of thousands of line of code. It's underpinned by a new framework, Firetruss, that I built to overlay an object-oriented layer on top of Firebase and manage data dependencies (which have been a perennial source of hard-to-reproduce bugs). The framework is built on top of Vue, which brings some performance advantages and much improved instrumentation to track down performance issues. It's also compatible with both Vue and Angular to ease the full transition from the latter to the former later this year.
The other major change is that most of the code that interacts with Firebase got broken out into a separate worker to make better use of modern multi-core processors. Even better, in Chrome or Firefox this is a shared worker so that all tabs share a single connection to Firebase as long as at least one Reviewable tab remains open. This cuts down on startup time as the socket is already established and the user authenticated, and lets all tabs share a single cache to reduce the need to refetch data.
Other than that, there's a few minor new features that I'll detail in a separate post, and more new features coming as the new version stabilizes. Exciting times!