Remove app manifest handling from teams.apps#611
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR removes the Teams app manifest concept from @microsoft/teams.apps, decoupling runtime behavior (bots/tabs/plugins) from deployment-time manifest metadata and updating dependent packages to handle missing sender/bot names.
Changes:
- Removed generated manifest schema/types and the
manifestsurface area (AppOptions.manifest,App.manifest,App.name,configTab(),manifestexport). - Updated proactive messaging reference construction and related API types to allow
Account.nameto be omitted. - Updated devtools UI rendering to fall back to
"App"when sender names are missing, and adjusted mention-stripping behavior accordingly.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/devtools/src/stores/ChatStore.ts | Fallback to "App" when from.name is missing in chat message rendering. |
| packages/devtools/src/components/ActivitiesGrid/ActivityGridColumns.tsx | Fallback to "App" when from.name is missing in activities grid. |
| packages/botbuilder/src/plugin.ts | Removes dependency on @microsoft/teams.apps manifest DI surface. |
| packages/apps/src/manifest.ts | Deletes generated manifest TypeScript types. |
| packages/apps/src/index.ts | Stops exporting manifest namespace from @microsoft/teams.apps. |
| packages/apps/src/app.ts | Removes manifest/name handling from App and its DI registrations; bot conversation references no longer invent a name. |
| packages/apps/src/app.spec.ts | Updates tests for proactive send behavior when bot name is absent. |
| packages/apps/src/app.embed.ts | tab() now only hosts static content; removes manifest mutations and deletes configTab(). |
| packages/apps/package.json | Removes manifest generation script from the apps workspace. |
| packages/apps/manifest.schema.json | Deletes the manifest JSON schema used for generation. |
| packages/api/src/models/account.ts | Makes Account.name optional to support unnamed proactive bot references. |
| packages/api/src/activities/utils/strip-mentions-text.ts | Avoids replacing <at>...</at> by name when mentioned.name is absent. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
corinagum
reviewed
Jun 9, 2026
corinagum
approved these changes
Jun 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Removing the manifest concept from
@microsoft/teams.apps.Why:
The Teams app manifest is deployment/configuration metadata, not runtime state. The server does not need the manifest to exist when it runs, and in some setups it may not exist at runtime at all.
teams.appscurrently assumes manifest data can be passed into the runtime, stored onApp, mutated bytab()/configTab(), and used for proactive bot identity. That couples runtime behavior to one specific configuration mechanism. If someone configures or packages their app another way, those runtime dependencies are weird and not very useful. Additionally, we are not promoting keeping manifests inappPackage/now either (the new CLI doesn't promote it for eg).It also does not buy us much right now:
app.manifestsynthesizes metadata, but nothing in the runtime depends on it.tab()'s useful runtime behavior is serving static files; the manifest mutation is packaging metadata.configTab()only mutates manifest metadata.app.nameonly readsmanifest.name.fullto set proactivebot.name, but bot name is not required.Interesting bits:
manifest,_manifest, andnamefromApp.tab()now matches teams.py behavior: it just hosts static content.configTab()since it only existed to mutate manifest metadata.Account.nameoptional because proactive bot references don't need to invent a name.Appwhen rendering unnamed senders.Tips for reviewers:
Start with
packages/apps/src/app.tsandpackages/apps/src/app.embed.ts. The giant deletions are generated manifest types/schema.Testing:
npm run build --workspace @microsoft/teams.apinpm test --workspace @microsoft/teams.appsnpm run clean --workspace @microsoft/teams.apps && npm run build --workspace @microsoft/teams.appsnpm run build --workspace @microsoft/teams.devtools