Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs
Hi @Nathan V
From my research, I found a scenario where a Task Module worked in one installation context but failed in another, even though validDomains was configured correctly. In that case, the root cause was that the same bot/app was installed simultaneously at both the organization level and as a personal/sideloaded app.
Teams did not pick up the updated manifest containing the correct validDomains until the app was completely removed and reinstalled. The suspected behavior is that Teams was resolving manifest/domain validation against a cached or conflicting installation record instead of reading the latest uploaded manifest.
Since publishing through the Admin Center is the one significant change in your environment, it may be worth checking:
- Whether your tenant still has an older sideloaded version of the app installed.
- Whether your test account currently has both: the original sideloaded version, and the organization-published version
installed at the same time.
Additionally, if the production app was published using Upload as a new app rather than Replace for an existing catalog entry, an App ID or manifest conflict could also occur. In some cases, this can cause manifest resolution or domain validation issues that only affect the published version, while the sideloaded version continues to work as expected.
It would be helpful to confirm:
- Was the production app published using Upload or Replace?
- If it was published using Upload, could you try performing a clean Replace deployment to rule out this possibility?
Finally, there is another possibility related to authentication.
I noticed that your Task Module URL includes: user_id=<email>. Because of that, it's worth checking whether the production environment triggers a different authentication flow compared to opening the page directly in a browser.
For example:
- A silent SSO or token refresh process might occur inside the Task Module iframe.
- That flow could redirect to a login page.
- The login page itself may not allow iframe embedding, as many identity providers set frame-blocking security headers by default.
If that's happening, the result would typically be:
- A blank or black iframe.
- No obvious error message.
- The request failing on the authentication provider's domain rather than your application's domain.
To verify this, I would recommend:
Open Dev Tools in Teams Desktop or Teams Web (F12) > Trigger the failing Task Module > Check the Network tab > Look for:
-Redirect chains.
-Blocked requests.
-Responses rejected due to frame restrictions.
-Requests that only appear when launched from Teams but not when opened directly in a browser.
This should help determine whether the issue is related to an installation/manifest conflict, or an authentication redirect occurring inside the iframe.
Please let me know if you find anything from those checks, especially whether both the sideloaded and org-published versions are installed simultaneously or whether the app was deployed using Upload versus Replace.