Skip to content

Conversation

@lyzno1
Copy link
Contributor

@lyzno1 lyzno1 commented Jan 9, 2026

Summary

  • Centralize setup status cache handling into utils/setup-status.ts
  • Reuse shared helper in app initializer and global public context
  • Prefetch setup status in parallel to reduce waterfall requests

Why This Speeds Up First Load

Before (sequential requests):

GlobalPublicStoreProvider mounts
    └─► GET /system-features ──────► done
                                       └─► render children
                                              └─► AppInitializer mounts
                                                     └─► GET /setup ──► done

After (parallel requests):

GlobalPublicStoreProvider mounts
    ├─► GET /system-features ──────► done ──► render children
    │                                              └─► AppInitializer reads localStorage (no API call)
    └─► GET /setup ────────────────► done ──► cached to localStorage

Testing

  • pnpm test utils/setup-status.spec.ts (11 tests passing)
  • pnpm lint:fix
  • pnpm type-check:tsgo

Copilot AI review requested due to automatic review settings January 9, 2026 13:56
@lyzno1 lyzno1 requested a review from iamjoel as a code owner January 9, 2026 13:56
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jan 9, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @lyzno1, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refactors the application's setup status caching mechanism to centralize its handling and improve performance. By introducing a new utility function, fetchSetupStatusWithCache, the PR ensures consistent caching logic across different parts of the application, specifically in the AppInitializer and GlobalPublicStoreProvider. This change also optimizes the initial loading experience by prefetching the setup status without blocking the rendering of essential components.

Highlights

  • Centralized Caching: The logic for handling setup status caching has been moved into a dedicated utility function, fetchSetupStatusWithCache, improving maintainability and consistency.
  • Shared Utility: The new fetchSetupStatusWithCache utility is now utilized by both AppInitializer and GlobalPublicStoreProvider, ensuring a single source of truth for setup status retrieval.
  • Non-Blocking Prefetch: The GlobalPublicStoreProvider now prefetches the setup status in a non-blocking manner, ensuring that the initial page load is not delayed by this operation.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@lyzno1 lyzno1 changed the title Refactor setup status caching refactor(web): setup status caching Jan 9, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request is a solid refactoring that centralizes the setup status caching logic into a new utility file, web/utils/setup-status.ts. This improves code organization and reusability. The parallel data fetching in GlobalPublicStoreProvider using useQueries is a great performance enhancement. However, the new utility file directly accesses localStorage without checking for a browser environment, which will cause the application to crash during server-side rendering (SSR). I've added a couple of high-severity comments with suggestions to make the new utility SSR-safe.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors setup status caching by centralizing the cache handling logic into a reusable utility function. The changes reduce code duplication and improve maintainability by creating a single source of truth for setup status caching behavior.

Key Changes:

  • Created web/utils/setup-status.ts with a centralized fetchSetupStatusWithCache function
  • Refactored app-initializer.tsx to use the new utility function
  • Enhanced global-public-context.tsx to prefetch setup status in parallel with system features using useQueries

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
web/utils/setup-status.ts New utility module that centralizes setup status caching logic with localStorage
web/app/components/app-initializer.tsx Refactored to use the new shared caching utility instead of inline cache logic
web/context/global-public-context.tsx Enhanced to prefetch setup status in parallel with system features while keeping the prefetch non-blocking

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@lyzno1 lyzno1 force-pushed the refactor/setup-status-cache branch from d397ad2 to d9af65e Compare January 9, 2026 14:02
@lyzno1 lyzno1 marked this pull request as draft January 9, 2026 14:03
- Remove unused _setupStatusQuery destructuring, only extract featuresQuery
- Add comprehensive unit tests for fetchSetupStatusWithCache utility
- Update comments to clarify prefetch intent
@lyzno1 lyzno1 marked this pull request as ready for review January 11, 2026 05:48
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Jan 11, 2026
@lyzno1
Copy link
Contributor Author

lyzno1 commented Jan 11, 2026

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

🤖 Generated with Claude Code

@lyzno1 lyzno1 linked an issue Jan 11, 2026 that may be closed by this pull request
setSystemFeatures({ ...defaultSystemFeatures, ...data })
}, [data, setSystemFeatures])
if (featuresQuery.data)
setSystemFeatures({ ...defaultSystemFeatures, ...featuresQuery.data })
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you also delete this pattern?

@lyzno1 lyzno1 marked this pull request as draft January 12, 2026 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor] Centralize setup status caching and prefetch in parallel

3 participants