Skip to content

Migrate remaining Blazor JS interop globals to JavaScript modules #255

Description

@damyanpetev

Switch igSendMessage, igWaitForLoaded, igRequestLoad, etc, defined globally on (window as any) to JS Modules

Is your feature request related to a problem?

The current JavaScript interop used by the full IgniteUI.Blazor package still relies on globally attached functions such as igSendMessage, igWaitForLoaded, and igRequestLoad. This makes the integration harder to evolve alongside modern Blazor JS isolation patterns and increases coupling between bootstrap logic and runtime script loading.

Describe the solution you'd like

Migrate the remaining global window-based interop hooks used by the full IgniteUI.Blazor & this package's integration to Blazor JavaScript modules / isolated JS interop. The goal is to preserve current behavior while moving package runtime interactions to module-based imports so the public package can work cleanly with the broader full-package setup and modern Blazor guidance.

Scope should include:

  • identifying all remaining globally registered interop functions used by package bootstrapping and runtime communication
  • replacing them with module exports and module import usage from Blazor
  • verifying equivalent behavior for message dispatch, load coordination, and deferred resource loading
  • ensuring the resulting design is compatible with the full IgniteUI.Blazor packaging model without exposing internal implementation details
  • validating both Server and WASM scenarios if applicable

Proposed API or Usage

// Illustrative only
var module = await JS.InvokeAsync<IJSObjectReference>("import", "./_content/IgniteUI.Blazor/interop.js");
await module.InvokeVoidAsync("requestLoad", options);
await module.InvokeVoidAsync("sendMessage", payload);

Describe alternatives you've considered

No response

How important is this feature to you?

Critical — blocking my project

Additional context

This task comes from follow-up work needed to ensure the public IgniteUI/igniteui-blazor package aligns with changes required for the complete IgniteUI.Blazor distribution. The task should cover the JS interop modernization needed for compatibility.

Related context:

Metadata

Metadata

Assignees

No one assigned

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions