Skip to content

⚡ Bolt: Cache Blog API response to prevent redundant fetches#120

Closed
schmug wants to merge 1 commit into
mainfrom
bolt/cache-blog-app-response-15184433077800664925
Closed

⚡ Bolt: Cache Blog API response to prevent redundant fetches#120
schmug wants to merge 1 commit into
mainfrom
bolt/cache-blog-app-response-15184433077800664925

Conversation

@schmug
Copy link
Copy Markdown
Owner

@schmug schmug commented May 15, 2026

💡 What

Implemented a module-level cache for BlogApp.tsx and attached a timeout to its network fetch.

🎯 Why

In a windowed OS interface, components mount and unmount dynamically when their window opens or closes. By default, BlogApp destroyed its state upon closing and repeatedly performed network fetches to /api/blog.json every single time it was opened. This resulted in network waterfalls for essentially static data.

📊 Impact

  • Eliminates duplicate API requests for /api/blog.json when opening/closing the app repeatedly.
  • Instant data loading UI rendering for any open after the first.
  • Protects against infinite hangs by bounding the fetch with a 10s AbortSignal timeout.
  • Resolves overlapping concurrent network calls when multiple instances of the app open at exactly the same time.

🔬 Measurement

Load the application, open the Blog app (it will fetch). Close the Blog app, open it again (it will load instantly, verifiable in DevTools Network tab that no second request was made).


PR created automatically by Jules for task 15184433077800664925 started by @schmug

…fetch

Implements a module-level cache for fetching `/api/blog.json` inside the
`BlogApp` component.

Because the windowed architecture destroys component state on close,
repeatedly opening and closing the blog app would unnecessarily re-fetch
the blog payload over the network. By storing `fetchPromise` and
`cachedPayload` outside the component scope, subsequent initializations
resolve instantly without dropping duplicate API calls.

Also includes `AbortSignal.timeout(10000)` in the fetch request to ensure
slow network conditions do not hang the UI indefinitely.

Co-authored-by: schmug <38227427+schmug@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@schmug
Copy link
Copy Markdown
Owner Author

schmug commented May 16, 2026

Superseded by #127 (merged to main), which consolidated the best of the duplicate Bolt/Sentinel/Palette scheduled-agent PRs into one reviewed change. Closing as duplicate.

@schmug schmug closed this May 16, 2026
@google-labs-jules
Copy link
Copy Markdown
Contributor

Superseded by #127 (merged to main), which consolidated the best of the duplicate Bolt/Sentinel/Palette scheduled-agent PRs into one reviewed change. Closing as duplicate.

Understood. Acknowledging that this work is now obsolete and stopping work on this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant