From c94aa7316af87eeb9e8e8b34abfc3967edb03044 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Tue, 24 Mar 2026 18:13:31 +0100 Subject: [PATCH] send X-Schema-Version header when metadataVersion is 0 (#18924) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes https://github.com/twentyhq/twenty/issues/13103 Newly created workspaces start with metadataVersion = 0. The truthy check this.currentWorkspace?.metadataVersion && {…} treated 0 as falsy, so the X-Schema-Version header was never sent. Without this header, the backend's schema mismatch detection is bypassed and raw validation errors leak to Sentry. Replaced with isDefined() check. Also replaced bare negation checks with isDefined() in the backend validation hook for consistency. --- .../src/modules/apollo/services/apollo.factory.ts | 2 +- .../graphql/hooks/use-graphql-error-handler.hook.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/twenty-front/src/modules/apollo/services/apollo.factory.ts b/packages/twenty-front/src/modules/apollo/services/apollo.factory.ts index 84835b2b89..d278bea5ce 100644 --- a/packages/twenty-front/src/modules/apollo/services/apollo.factory.ts +++ b/packages/twenty-front/src/modules/apollo/services/apollo.factory.ts @@ -132,7 +132,7 @@ export class ApolloFactory implements ApolloManager { ...optionHeaders, authorization: token ? `Bearer ${token}` : '', 'x-locale': locale, - ...(this.currentWorkspace?.metadataVersion && { + ...(isDefined(this.currentWorkspace?.metadataVersion) && { 'X-Schema-Version': `${this.currentWorkspace.metadataVersion}`, }), ...(this.appVersion && { 'X-App-Version': this.appVersion }), diff --git a/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts b/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts index 24272421ee..75d02c73d2 100644 --- a/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts +++ b/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts @@ -291,8 +291,8 @@ export const useGraphQLErrorHandlerHook = < } if ( - !frontEndAppVersion || - !backendAppVersion || + !isDefined(frontEndAppVersion) || + !isDefined(backendAppVersion) || !semver.valid(frontEndAppVersion) || !semver.valid(backendAppVersion) ) {