Bug Description
After upgrading from @microsoft/teams.apps v2.0.2 to v2.0.4, calls to app.send() fail with the error "app not started" even though the app has successfully started.
The root cause is a breaking change introduced in PR #387 (released in v2.0.3). The
app.name getter was changed from reading the bot's display name from tokens to reading from the manifest.name constructor option:
Before (v2.0.2) - app.ts L136-L138:
get name() {
return this.tokens.bot?.appDisplayName;
}
After (v2.0.3+) - app.ts L175-L177:
get name() {
return this._manifest.name?.full;
}
The send() method checks if (!this.id || !this.name) and throws "app not started", but this error message is misleading because:
- The app is started (app.start() completed successfully)
- The actual issue is that manifest.name was not provided in the constructor
This is a breaking change that affects any code I had using app.send() for proactive messaging.
Steps to Reproduce
- Install @microsoft/teams.apps v2.0.3 or later
- Create an App instance without the manifest.name option:
const app = new App({
clientId: "...",
clientSecret: "...",
tenantId: "...",
});
- Start the app and call app.send():
await app.start(3978);
await app.send(conversationId, "Hello"); // Throws "app not started"
Expected Behavior
Either:
- The error message should indicate the actual problem (e.g., "manifest.name is required for app.send()")
- Or the SDK should fall back to this.tokens.bot?.appDisplayName for backwards compatibility
Actual Behavior
Throws Error: app not started which is misleading
Workaround: Add manifest.name to the App constructor:
const app = new App({
clientId: "...",
clientSecret: "...",
tenantId: "...",
manifest: {
name: { short: "MyApp", full: "My Application" },
},
});
SDK Version
2.0.4
Node.js Version
24.5.0
Additional Context
No response
Bug Description
After upgrading from
@microsoft/teams.appsv2.0.2 to v2.0.4, calls toapp.send()fail with the error"app not started"even though the app has successfully started.The root cause is a breaking change introduced in PR #387 (released in v2.0.3). The
app.namegetter was changed from reading the bot's display name from tokens to reading from themanifest.nameconstructor option:Before (v2.0.2) -
app.tsL136-L138:After (v2.0.3+) -
app.tsL175-L177:The send() method checks
if (!this.id || !this.name)and throws "app not started", but this error message is misleading because:This is a breaking change that affects any code I had using app.send() for proactive messaging.
Steps to Reproduce
await app.start(3978);await app.send(conversationId, "Hello"); // Throws "app not started"Expected Behavior
Either:
Actual Behavior
Throws Error: app not started which is misleading
Workaround: Add manifest.name to the App constructor:
SDK Version
2.0.4
Node.js Version
24.5.0
Additional Context
No response