Teams error Unable to reach the app: "Unable to reach the app" - invoke response timed out
Last verified against Microsoft Learn - Status codes from bot conversational APIs
Unable to reach the appWhat error Unable to reach the app means
This is the error Teams shows the user, not your logs, when an invoke-style interaction - a message extension action, a dialog (task module) submit - gets no answer in time. The messaging-extension documentation is exact: "Your app has five seconds to respond to the invoke message," and "If the app doesn't respond within five seconds, the Teams client retries the request twice before it sends an error message Unable to reach the app. If the bot replies after the timeout, the response is ignored."
Three facts in that sentence shape the fix. The budget is five seconds, wall-clock, including your cold start. The client retries twice - so a slow handler runs up to three times, which is why half-finished side effects (three database rows, three tickets) accompany this error. And a late response is discarded, so finishing at second six is indistinguishable from crashing. Microsoft's documented pattern: "The app must defer any long-running actions after the bot replies to the invoke request. The long-running action results can be delivered as a message" - acknowledge inside the window, do the real work asynchronously, deliver the outcome as a normal or proactive message.
What it looks like
// budget: 5 seconds, retried twice, late responses ignored
{
"name": "composeExtension/submitAction",
"type": "invoke",
"value": { "commandId": "createTicket", "data": { ... } }
}Why it happens
- The invoke handler performs slow work inline: model calls, third-party APIs, heavy queries.
- Serverless cold starts eat most of the five-second budget before your code runs.
- The endpoint is down or unreachable, so all three delivery attempts fail outright.
- The handler responds with an invalid invoke response shape, which the client treats as failure.
How to fix Teams error Unable to reach the app
- 1Time the handler: log invoke receipt and response timestamps; anything near 5 seconds is already failing for some users.
- 2Respond immediately with a lightweight invoke response, queue the heavy work, and deliver results as a follow-up message.
- 3Make invoke side effects idempotent (dedupe on the activity ID) so client retries cannot double-execute them.
- 4Keep the service warm (minimum instances / provisioned concurrency) if cold starts are the culprit.
- 5Confirm plain reachability - if the endpoint is down entirely, fix that first via the 502 entry's checklist.
How to stop it recurring
Architect every invoke path as acknowledge-then-work from the start; retrofitting async into a synchronous handler mid-incident is miserable. Watch p95 handler latency against the five-second ceiling as a standing alert. The per-surface response windows, including this one, are tabulated in response-time limits, and endpoint reachability itself is the subject of the webhook debugging guide.
Official reference: Microsoft Learn - Status codes from bot conversational APIs. See all Teams error codes or the Teams limits and quotas.
Related codes
Error Unable to reach the app - quick answers
What does Teams error Unable to reach the app mean?
This is the error Teams shows the user , not your logs, when an invoke-style interaction - a message extension action, a dialog (task module) submit - gets no answer in time.
How do I fix Teams error Unable to reach the app?
1. Time the handler: log invoke receipt and response timestamps; anything near 5 seconds is already failing for some users. 2. Respond immediately with a lightweight invoke response, queue the heavy work, and deliver results as a follow-up message. 3. Make invoke side effects idempotent (dedupe on the activity ID) so client retries cannot double-execute them. 4. Keep the service warm (minimum instances / provisioned concurrency) if cold starts are the culprit. 5. Confirm…
Stop debugging Teams by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.