Speed is a feature. While we try to pay attention to performance when adding new functionality, regressions and unoptimized codepaths do happen. Now and then, we look at critical aspects of the application and refactor, or re-architect portions of our tech stack to become more performant.
This time around, we took a look at startup performance for pre-warmed clients. With pre-warmed, we mean clients that spin up for a subsequent time and thus already have all the workspace data stored in the local database. Pre-warmed startups account for most sessions, making it a great candidate for us to sink our teeth into.
We concentrated our efforts around the following:
Refactoring and optimizing how we load up data at startup
Switching from Parcel to Rollup as our build system to improve bundle size
Lazy loading parts of the application and data that are used infrequently
This resulted in a big improvement in startup performance and memory consumption, especially on Safari and other browsers and our desktop applications. On our own workspace, which has around 4000 issues and hundreds of projects, we saw the following improvements:
Startup time to show active issues
59% faster on Safari
40-50% faster on other browsers and desktop app
Startup time to show a huge backlog
82% faster on Safari
60-65% faster on other browsers and desktop app
70-80% more efficient across all browsers and desktop apps
Bundle size improvements
We have improved code bundling by targeting only modern browsers, better dead code elimination, and code splitting. We've also made sure to preload code before it's needed. This means we load around 50% less code (30% when compressed). This results in ~10-30% faster page load times from a cold cache, depending on network speed.
Fixes and improvements
File uploads can now be canceled
Fixed ability to copy issue URL and ID when the issue is archived
Fixed a problem where multiple notification emails might have been sent to users
Added ability to revert to previous versions of issue descriptions. To use it, go to the issue edit screen and choose "Revert issue description" in the command menu.
When there are no notifications in the inbox, the Notifications drop-down button is no longer visible
Moving an issue to a different team now adheres to that team's "Active issues are required to belong to a cycle" setting
Cycles can now be 5 or 7 weeks long
Whether you create a new template or edit an existing one, you will now be redirected back to the page where you started the template action
When the search input is focused on small screens, the sidebar is also opened
API: Fixing a bug with imageUploadFromUrl not working when the source URL contained special characters or a query string