Teams Meeting Apps for DevOps: Live Incident Bridges
Meeting extensions let you put a live dashboard, action tracker, or runbook right inside the incident bridge. Here's how to build one and the surfaces you get.
- #microsoft-teams
- #meeting-apps
- #incident-response
- #devops
- #adaptive-cards
- #collaboration
The incident bridge call is where coordination actually happens during a sev-1, and for years the bridge was a black hole for context. People joined the call, then alt-tabbed to a wiki, a dashboard, and a chat to figure out what was going on. Every join cost two minutes of “catch me up.” A Teams meeting app puts the context inside the meeting window, so the bridge is self-describing.
A meeting app is a Teams app that surfaces during a meeting — in the pre-join screen, in the side panel, on the in-meeting stage, or as a chat tab. For DevOps that means a live action tracker and status panel that everyone on the bridge sees in the same place, without leaving the call.
The four meeting surfaces
A meeting app can target several distinct surfaces, declared in the app manifest under configurableTabs with the right meetingSurfaces and scopes:
- Side panel — a narrow panel docked beside the meeting. This is where the live incident tracker lives: current status, open actions, owners.
- Stage — the shared content area, where you’d render a full dashboard everyone can see at once. Anyone can share an app to stage.
- Chat tab — a tab in the meeting chat, for content that should persist after the call (the timeline, the notes).
- Pre/post-meeting — the meeting details screen before it starts and after it ends, good for an agenda or a postmortem-draft link.
You declare meeting context support in the manifest:
{
"configurableTabs": [
{
"configurationUrl": "https://ops.example.com/config",
"scopes": ["groupChat"],
"context": [
"meetingSidePanel",
"meetingStage",
"meetingChatTab"
]
}
]
}
The context array is the key — it tells Teams which surfaces your tab is allowed to render in.
Knowing where you’re running
Your tab content is a web app, and the same page can render in the side panel, on stage, or as a chat tab. The Teams JS SDK tells you the frameContext so you can render the right density for each:
import { app } from "@microsoft/teams-js";
await app.initialize();
const context = await app.getContext();
const frame = context.page.frameContext; // 'sidePanel' | 'meetingStage' | 'content'
const meetingId = context.meeting?.id;
if (frame === "sidePanel") {
renderCompactTracker(meetingId); // narrow: status + top 3 actions
} else if (frame === "meetingStage") {
renderFullDashboard(meetingId); // wide: full grid for everyone
}
Same component, two densities. The side panel shows the at-a-glance tracker; the stage shows the full dashboard. The meetingId ties your app state to this specific bridge.
Sharing your app to the stage
The genuinely useful trick for incident bridges is shareAppContentToStage — programmatically pushing your app’s content (or a specific URL within it) to the shared stage so everyone sees it:
import { meeting } from "@microsoft/teams-js";
meeting.shareAppContentToStage((err, result) => {
if (err) { console.error(err); return; }
// content is now live on stage for all participants
}, "https://ops.example.com/incident/INC-1234/dashboard");
The incident commander clicks “share dashboard to stage” in the side panel, and the live status grid appears for everyone on the call. No screen-sharing a browser tab, no “can you make that bigger” — it’s a native, interactive surface.
In-meeting notifications
You can also fire a targeted in-meeting notification — a small banner during the call — via the bot’s sendMeetingNotification capability. Use it sparingly: a new sev escalation or a “mitigation deployed” signal is worth interrupting the bridge for. A routine status tick is not. The fastest way to get your meeting app muted is to make it noisy.
What I put in an incident meeting app
The version that earned its keep on my team:
- Side panel: current severity, mitigation status, and the live action checklist with owners — the same Loop-style tracking, but pinned to the bridge.
- Stage (on demand): the service health grid and the error-rate graph, shared by the commander when the call needs to look at one thing together.
- Chat tab: the running timeline, auto-appended as events come in, which becomes the seed of the postmortem after the call.
The result is that someone joining the bridge fifteen minutes in reads the side panel and is caught up without anyone repeating themselves. That alone justified building it.
Practical notes
- Meeting apps need the meeting context permission and proper RSC scopes to read meeting details and participants. Get the manifest scopes right or
getContextreturns less than you expect. - Test in a real meeting, not just the app sandbox. Surface behavior — especially stage sharing and side-panel sizing — differs from how a plain tab renders, and only a real meeting exposes the quirks.
- Persist state by
meetingId, not by user. The bridge’s state belongs to the meeting; everyone should see the same tracker regardless of who opened the panel. - Keep the side panel narrow-friendly. It’s a thin column. Dense tables that look fine on a tab get unusable there — design for the constraint.
A meeting app turns the incident bridge from a place people alt-tab away from into the place the incident is actually run. The context lives where the conversation lives, and that’s the whole point.
For more incident-coordination patterns in Teams, see the Microsoft Teams guides, and grab incident-tracker prompts from the prompt library.
Meeting app surfaces, SDK methods, and required permissions change across Teams platform versions. Verify current capabilities and test in a live meeting before relying on them during an incident.
Download the Free 500-Prompt DevOps AI Toolkit
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.