calcom/cal.diy · error · Error
Default conferencing app '${defaultApp.appSlug}' doesnt exis
Error message
Default conferencing app '${defaultApp.appSlug}' doesnt exist. What it means
Thrown by bulkUpdateEventsToDefaultLocation when the defaultConferencingApp.appSlug stored in user metadata does not resolve to a registered app (getAppFromSlug returns undefined) or that app has no location type in its appData. The stored slug is stale or refers to an app no longer available.
Source
Thrown at packages/app-store/_utils/bulkUpdateEventsToDefaultLocation.ts:29
export const bulkUpdateEventsToDefaultLocation = async ({
eventTypeIds,
user,
prisma,
}: {
eventTypeIds: number[];
user: Pick<User, "id" | "metadata">;
prisma: PrismaLike;
}) => {
const defaultApp = userMetadataSchema.parse(user.metadata)?.defaultConferencingApp;
if (!defaultApp) {
throw new Error("Default conferencing app not set");
}
const foundApp = getAppFromSlug(defaultApp.appSlug);
const appType = foundApp?.appData?.location?.type;
if (!appType) {
throw new Error(`Default conferencing app '${defaultApp.appSlug}' doesnt exist.`);
}
const credential = await prisma.credential.findFirst({
where: {
userId: user.id,
appId: foundApp.slug,
},
select: {
id: true,
},
});
const eventTypesToUpdate = await prisma.eventType.findMany({
where: {
id: {
in: eventTypeIds,
},
userId: user.id,View on GitHub (pinned to 176037d0af)
Solutions
- Have the user re-pick a default conferencing app so metadata stores a current, valid slug.
- If an app was renamed, migrate affected users' metadata to the new slug.
- Verify the app is installed and generated in the app-store so getAppFromSlug finds it.
- Guard callers: clear the default and prompt re-selection when getAppFromSlug returns undefined.
Example fix
// before - trusting stored metadata blindly
await bulkUpdateEventsToDefaultLocation({ eventTypeIds, user, prisma });
// after - validate the slug resolves
import { getAppFromSlug } from '@calcom/app-store/utils';
const slug = userMetadataSchema.parse(user.metadata)?.defaultConferencingApp?.appSlug;
if (!slug || !getAppFromSlug(slug)?.appData?.location?.type) {
return res.status(400).json({ message: 'Default conferencing app is no longer available' });
} Defensive patterns
Strategy: validation
Validate before calling
import { getAppFromSlug } from '@calcom/app-store/utils';
const slug = userMetadataSchema.parse(user.metadata)?.defaultConferencingApp?.appSlug;
if (!slug || !getAppFromSlug(slug)?.appData?.location?.type) {
return res.status(400).json({ message: 'Default conferencing app is no longer available' });
} Type guard
function isUsableConferencingApp(slug: string): boolean {
return !!getAppFromSlug(slug)?.appData?.location?.type;
} Try / catch
null
Prevention
- Validate the stored slug resolves to an app with a location type before bulk update.
- Run slug migrations when an app is renamed so metadata stays valid.
- Clear stale defaults and prompt re-selection when an app is uninstalled.
When it happens
Trigger: User metadata points to defaultConferencingApp.appSlug that is not in the app registry, or the app exists but exposes no appData.location.type. Happens when an app was uninstalled/renamed/disabled after the user set it as default.
Common situations: App slug renamed in an upgrade; app package removed from the build; user manually edited metadata; app disabled via feature flags; the app never had a conferencing location type (misconfigured as a default conferencing app).
Related errors
- Default conferencing app '${defaultApp.appSlug}' doesnt exis
- Default conferencing app not set
- Default conferencing app not set
- Could not set ${app} as default conferencing app
- Team with id ${teamId} not found
AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12).
Data as JSON: /api/errors/004cef9da3b4ad30.
Report an issue: GitHub.