From 61a469cff865e8f2657f4a276782cea572968fe8 Mon Sep 17 00:00:00 2001 From: Baptiste Devessier Date: Thu, 4 Dec 2025 15:50:19 +0100 Subject: [PATCH] Fix Timeline blinking (#16322) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Timeline activities are fetched using the `useTimelineActivities` hook, which relies on `useFindManyRecords`. Previously, it also fetched linked object titles via `useLinkedObjectsTitle`. When the user scrolled to the bottom, we triggered `fetchMore` from `useFindManyRecords` to load additional data. This operation correctly handled in-place loading and did not set the main `loading` flag to `true`. However, after `useFindManyRecords` returned updated data, new variables were passed to `useLinkedObjectsTitle`, which didn’t leverage the `fetchMore` pattern. As a result, the `loading` state of `useLinkedObjectsTitle` was set to `true`, even when only partial data changed. Our logic for displaying the skeleton loader was: ```ts const loading = loadingTimelineActivities || loadingLinkedObjectsTitle; ``` When `loadingLinkedObjectsTitle` turned `true`, this triggered the entire list to unmount and remount, causing repeated unnecessary reloads. To resolve this, I no longer delay rendering the list while loading linked objects title. ## Demo The skeleton is only shown at the beginning of the navigation. https://github.com/user-attachments/assets/cb79f91d-5151-4dc1-8e6b-a322e56a48c4 Closes https://github.com/twentyhq/twenty/issues/16210 --- .../timeline-activities/hooks/useTimelineActivities.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts index e58c2ab8a6..78111410cb 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts +++ b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts @@ -46,10 +46,9 @@ export const useTimelineActivities = ( .map((timelineActivity) => timelineActivity.linkedRecordId) .filter(isDefined); - const { loading: loadingLinkedObjectsTitle } = - useLinkedObjectsTitle(activityIds); + useLinkedObjectsTitle(activityIds); - const loading = loadingTimelineActivities || loadingLinkedObjectsTitle; + const loading = loadingTimelineActivities; return { timelineActivities,