Custom floating window: App Extensions SDK `initialize()` never resolves while the window is hidden

We’re building a Custom UI app (@pipedrive/app-extensions-sdk@0.13.1) with a floating window and trying to understand its initialization lifecycle. Hoping someone can confirm whether this is a bug or the intended behavior.

The issue

The floating window iframe loads on every page (hidden until shown). While it’s hidden and hasn’t been opened, the App Extensions SDK’s initialize() method never resolves. Pipedrive passes a valid id and new AppExtensionsSDK() constructs fine, but the promise it returns never settles — it neither resolves nor rejects, even well past Pipedrive’s documented 10-second initialization budget. We confirmed this with a minimal page that just reads id from the URL query params, passes it to the SDK constructor, and calls initialize().

It only initializes after the user opens the window from the apps dock. At that point Pipedrive loads a fresh iframe (a different id, plus extra URL params like userId, companyId, theme), initialize() resolves in a few milliseconds, and from then on SET_NOTIFICATION (the dock badge) and SHOW_FLOATING_WINDOW work as expected.

Why it blocks us

Two things we want to do both require the floating window’s SDK to be initialized before the user opens it, which never happens:

  1. Set the dock notification badge on page load (SET_NOTIFICATION).
  2. Show the floating window programmatically (e.g. on an incoming call) without the user opening it first.

Questions

  1. Is a loaded-but-hidden floating window supposed to be able to initialize()? Is the never-resolving handshake a bug, or is initialization intentionally deferred until the window is first opened?
  2. If it’s deferred by design, what’s the intended way to set the dock badge on load and to show the window programmatically before the user has opened it manually?

References

This is a really valid question and I think you’re right to push for clarity on whether it’s a bug or by design. My gut says it’s intentional — the floating window seems to need a live handshake from the Pipedrive parent window to complete initialization, and that just doesn’t happen when it’s hidden. I do a lot of marketplace app development work and we’ve learned to never tie notification state to UI component lifecycle — it’s just too fragile. Keep them separate and sync up once the UI is ready. For your use case though, especially the programmatic show before user interaction, that feels like something Pipedrive should support natively. Would be great if someone from the team could confirm the intended path here.