Skip to content

Copilot Web - Browser version of Copilot #1718

@irgordon

Description

@irgordon

Describe the bug

Copilot’s browser-based client consistently degrades into a non‑responsive state during long coding or iterative development sessions. The issue is not model latency—it’s the client architecture. The UI enters a “spinny wheel” stall after several prompts, even when the backend is healthy. This is reproducible across Edge, Chrome, and the Windows app.

Core failure modes

  • Context payload growth — Each request resends the full conversation history, including hidden metadata. After 4–6 prompts, the payload becomes large enough that the client stalls before streaming begins.
  • Client-side memory leaks — The Copilot web client steadily accumulates RAM. Edge’s per‑tab isolation makes this worse. Once the tab crosses a threshold, the UI freezes even though the model has already generated a response.
  • Websocket fragility — The streaming connection is easily disrupted by extensions, tab suspension, or minor network jitter. When the websocket drops, the UI shows an infinite spinner instead of recovering or retrying.
  • Lack of graceful degradation — When the backend throttles or deprioritizes a request, the client provides no feedback. It simply spins indefinitely, giving the impression of a frozen app.

Impact on real workflows

This behavior makes Copilot unreliable for long coding sessions, multi-step debugging, or iterative refinement. The model is fast, but the client becomes the bottleneck. Developers lose trust because the UI appears to “hang” even when the backend is functioning normally.

What needs to be fixed

  • Implement incremental context windows instead of resending the full conversation every request.
  • Aggressively manage client memory and release DOM state between turns.
  • Harden the websocket layer with automatic reconnection, retry logic, and fallback to non-streaming mode when needed.
  • Expose transparent status messages when throttling or rate-limits occur, instead of leaving users on an indefinite spinner.
  • Add a “lightweight mode” for long coding runs that minimizes UI overhead and avoids DOM-heavy rendering.

The core ask: Treat the Copilot client as a long‑running development tool, not a short‑session chat widget. The current architecture cannot sustain multi-step coding workflows without freezing, and the fix requires changes to context handling, memory management, and websocket resilience—not the model itself.

Affected version

No response

Steps to reproduce the behavior

No response

Expected behavior

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions