Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve loading times #33

Open
AlexxNica opened this issue Oct 24, 2022 · 5 comments
Open

Improve loading times #33

AlexxNica opened this issue Oct 24, 2022 · 5 comments
Assignees
Labels
discussion This issue is not supposed to be used to track work, only for discussions or spawning work
Milestone

Comments

@AlexxNica
Copy link
Collaborator

AlexxNica commented Oct 24, 2022

Overview

Users currently face slow loading times on the homepage when submitting a new URL to generate a roadmap. We should explore the root cause and fix this.

Possible improvements

Open question

  • When do we call this done?

Related discussions and proposals

@AlexxNica AlexxNica added this to the MVP Release milestone Oct 25, 2022
@SgtPooki SgtPooki added status/needs-clarification This issue requires further information prior to becoming ready for work effort/days The work in this issue, which should be status/ready, should take less than a week to complete labels Nov 11, 2022
@SgtPooki
Copy link
Contributor

related to #103, but #103 is more of a sub-item for this.

SgtPooki added a commit that referenced this issue Nov 24, 2022
@SgtPooki
Copy link
Contributor

ended up having to resolve most of this as part of #158 , and will be targeting resolving this with #182

@SgtPooki SgtPooki added MVP status/ready This issue has enough information to be worked on and no technical blockers or pre-reqs P1 and removed post-MVP status/needs-clarification This issue requires further information prior to becoming ready for work labels Nov 29, 2022
@SgtPooki SgtPooki self-assigned this Nov 29, 2022
@SgtPooki SgtPooki changed the title Improve loading times feat: Improve loading times Nov 29, 2022
@AlexxNica AlexxNica changed the title feat: Improve loading times Improve loading times Feb 19, 2023
@AlexxNica
Copy link
Collaborator Author

Reopening this issue as the suggestions still need to be addressed. The improvements are related to making calls directly from the client to GitHub without going through our API.

I've opened #325 to test this approach, and I think we can use client-side fetching to load data from our APIs after the client hits GitHub's rate limiting if needed.

@AlexxNica AlexxNica reopened this Feb 19, 2023
@AlexxNica AlexxNica added discussion This issue is not supposed to be used to track work, only for discussions or spawning work and removed MVP status/ready This issue has enough information to be worked on and no technical blockers or pre-reqs P1 effort/days The work in this issue, which should be status/ready, should take less than a week to complete labels Feb 19, 2023
@AlexxNica
Copy link
Collaborator Author

@AlexxNica
Copy link
Collaborator Author

I'm having some ideas on strategies we can use to improve loading while I work on #325:

  1. We load the first roadmap page (simple view) on the client side using the standard limits from non-authenticated GitHub API calls. (It's likely that most simple-view roadmaps would be within the limit range.)
  2. After loading the first view, we start prefetching and preloading data for the roadmap's children on the background. As soon as the user clicks on the detailed view, we'd already have most if not all of the data loaded.

For the background work, we can fetch data from GitHub using a mix of methods (e.g., authenticated & non-authenticated calls to the REST and GraphQL endpoints). We defer calls as much as possible to save resources.

Currently, I think the main features that require data from a roadmap's children are:

  • For the overview/simple view: the ability to see the completion rate and click to open the item as a roadmap if the item has children.
  • For the detailed view: the ability to see the root roadmap's children as themes with grandchildren as subitems under those themes.

Given that info, we can think of different approaches to this.

  • One idea would be to gate the detailed view for users authenticated with a GitHub account.

Note: I'm just thinking out loud here, as we need more data to make an informed decision.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion This issue is not supposed to be used to track work, only for discussions or spawning work
Projects
Status: In Progress 🏗
Archived in project
Development

No branches or pull requests

4 participants