November 6th, 2020.
Performance Upgrades! ⚡
There has been a big focus on performance improvements recently! In this past week, we deployed some significant application seed improvements - read on for details:
- We now have a read-through cache on our GraphQL endpoints which will cache queries and automatically invalidate the cache on mutations.
- The application now makes GraphQL requests over WebSockets instead of HTTP which increases performance significantly.
- We have optimized how we send repeated GraphQL queries from the application by using a persistent query identifier instead of sending the entire GraphQL query each time cutting down on the amount of data we transfer.
- We cut down on our application bundle size by refactoring some of our code splitting as well as factoring out dependencies that we could remove
- Our vendor bundle has been reworked for the application so that third-party assets could be cached by the browser or intermediate caches on each build if they have not changed.
- We increased the period of caching on our application static assets to cache them for 1 year since they are immutable.
- Moved the loading of some third-party components (such as Pendo) to load once the application has rendered and is idle and moved some dependencies to only load when that screen is loaded (such as our billing provider on the Billing page).
In addition, we have a few more optimizations that will roll out soon including:
- Using a 304 Not Modified (ETag) like capability for our GraphQL queries. The application will be able to send the ETag from the previous query to the GraphQL server and the server will compare with the result and if the same, will inform the application to use the local copy saving on the amount of data we transfer and cache operations inside the application.
- Enabling application level cache (which is set up but only used for inter-application caching) so that data can be saved locally and rendered immediately instead of waiting on data from the backend.
- Optimizing how and when we load certain data when it is not visible on the screen. For example, today we load data for the Activity Feed (Pulse) even when it’s not visible.
Improvements and Fixes
- Resolved a bug where Auto-Assign would cause an error in Sprint Planning.
- Streamlined the query we use for User metadata to help speed that up.
- We created the framework for our new entity recommendation engine that will recommend issues/code to follow based on your current favorite entities (more to come on this).
- Resolved a problem with linking GitHub accounts in Settings.
- Created the initial logic for Repo / Pull Request Impact (read more on our roadmap blog).
- Fixed a problem with stalling pipeline consumers.
Your feedback truly helps shape our product, please join our Slack Community here and let us know what you think!