Skip to content

IsolatedRendererProvider: failed bundle load is cached permanently #186

@rgbkrk

Description

@rgbkrk

Problem

In isolated-renderer-context.tsx, loadingPromise is cached at module level and never reset on rejection. If the first bundle load fails (network error, 404, etc.), all future mounts/retries reuse the rejected promise and can never recover.

Location

  • registry/outputs/isolated/isolated-renderer-context.tsx

Suggested Fix

In the .catch handler, reset loadingPromise = null so a later render can retry:

.catch((error) => {
  loadingPromise = null; // Allow retry on next mount
  if (!cancelled) {
    setState((s) => ({ ...s, isLoading: false, error }));
  }
});

Optional: add bounded retry with backoff for transient failures.

Additional Suggestion

Consider adding error logging in the catch handler for debugging:

.catch((error) => {
  console.error("[IsolatedRendererProvider] Bundle load failed:", error);
  loadingPromise = null;
  if (!cancelled) {
    setState((s) => ({ ...s, isLoading, false, error }));
  }
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions