Draft/Local-Test General App, Surface set to Meeting only, but a second inMainClient window opens automatically a few seconds after the in-meeting panel

When launching my app from the in-meeting Apps toolbar during a live meeting, the docked side panel opens correctly and works as expected (attached to the meeting, getRunningContext returns inMeeting). A few seconds later, a second, separate floating window automatically opens showing the same app, but reporting runningContext: "inMainClient" — as if it’s a completely independent, non-meeting-attached instance. I’ve already ruled out:

Only “Meeting” is enabled under Surface — no other surfaces are checked

The app’s Zoom App SDK → Add APIs list only includes the 10 capabilities the app actually uses; expandApp is included but reports as unsupported by this client and is never called

The app’s own code never calls zoomSdk.expandApp() or window.open() anywhere

I initially suspected this was the OAuth authorization window staying open after redirecting back to my Home URL, but confirmed the floating window is loading my plain / route directly — not the /auth callback — so it isn’t that

“Keep Zoom apps open” is already turned off in Zoom settings

Fully removing and re-adding the app via Local Test doesn’t change the behavior

Is this expected behavior for Draft/unpublished General Apps specifically during Local Test (e.g. some kind of secondary preview instance), or is this a bug? If expected, is there a way to disable it during testing, or does it only affect Draft apps and go away once published?

Happy to share a screen recording or more logs if useful.