diff --git a/apps/studio/pages/project/[ref]/observability/index.tsx b/apps/studio/pages/project/[ref]/observability/index.tsx
index 087c2791fb1..24e081daa5d 100644
--- a/apps/studio/pages/project/[ref]/observability/index.tsx
+++ b/apps/studio/pages/project/[ref]/observability/index.tsx
@@ -1,25 +1,25 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
-import { useRouter } from 'next/router'
-import { useEffect, useState } from 'react'
-
-import { useParams, useFlag } from 'common'
-import { CreateReportModal } from 'components/interfaces/Reports/CreateReportModal'
+import { useFeatureFlags, useFlag, useParams } from 'common'
import { ObservabilityOverview } from 'components/interfaces/Observability/ObservabilityOverview'
+import { CreateReportModal } from 'components/interfaces/Reports/CreateReportModal'
import DefaultLayout from 'components/layouts/DefaultLayout'
import ObservabilityLayout from 'components/layouts/ObservabilityLayout/ObservabilityLayout'
import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState'
import { useContentQuery } from 'data/content/content-query'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useProfile } from 'lib/profile'
+import { useRouter } from 'next/router'
+import { parseAsBoolean, useQueryState } from 'nuqs'
+import { useEffect, useState } from 'react'
import type { NextPageWithLayout } from 'types'
import { LogoLoader } from 'ui'
-import { parseAsBoolean, useQueryState } from 'nuqs'
export const UserReportPage: NextPageWithLayout = () => {
const router = useRouter()
const { ref } = useParams()
const { profile } = useProfile()
+ const { hasLoaded: flagsLoaded } = useFeatureFlags()
const showOverview = useFlag('observabilityOverview')
const [showCreateReportModal, setShowCreateReportModal] = useQueryState(
'newReport',
@@ -37,6 +37,7 @@ export const UserReportPage: NextPageWithLayout = () => {
useEffect(() => {
if (!isSuccess) return
+ if (!flagsLoaded) return // Wait for flags to load before checking redirect
if (showOverview) return // Don't redirect if overview is enabled
const reports = data.content
@@ -44,7 +45,7 @@ export const UserReportPage: NextPageWithLayout = () => {
.sort((a, b) => a.name.localeCompare(b.name))
if (reports.length >= 1) router.push(`/project/${ref}/observability/${reports[0].id}`)
if (reports.length === 0) router.push(`/project/${ref}/observability/api-overview`)
- }, [isSuccess, data, router, ref, showOverview])
+ }, [isSuccess, data, router, ref, showOverview, flagsLoaded])
const { can: canCreateReport } = useAsyncCheckPermissions(
PermissionAction.CREATE,
@@ -55,6 +56,11 @@ export const UserReportPage: NextPageWithLayout = () => {
}
)
+ // Wait for flags to load before rendering to avoid flashing wrong page
+ if (!flagsLoaded || isLoading) {
+ return
- Create custom reports for your projects. -
-- Get a high level overview of your network traffic, user actions, and infrastructure - health. -
-Create custom reports for your projects.
++ Get a high level overview of your network traffic, user actions, and infrastructure + health. +
+