문제 상황 요약..

결과적으로 두 테이블이 서로 RLS 평가 시 상대 테이블을 요구하게 되어

Supabase가 내부적으로 정책 평가 루프 → “쿼리 응답 지연 또는 500/403 반복” → 프론트에서 자동 재시도 → 무한 재귀 fetch 루프 발생

문제됐던 정책 예시

-- groups RLS
create policy "view approved or member groups"
on groups for select
to authenticated
using (
  approved = true
  or exists (
    select 1
    from group_members gm
    where gm.group_id = groups.group_id
      and gm.user_id = auth.uid()
  )
);

-- group_members RLS
create policy "view same group members"
on group_members for select
to authenticated
using (
  exists (
    select 1
    from groups g
    where g.group_id = group_members.group_id
      and (g.approved = true or g.created_by = auth.uid())
  )
);

해결된 정책

-- 그룹
create policy "view approved groups"
on groups for select
to authenticated
using (approved = true or created_by = auth.uid());

-- 멤버
create policy "view members of same group"
on group_members for select
to authenticated
using (
  exists (
    select 1
    from group_members gm2
    where gm2.group_id = group_members.group_id
      and gm2.user_id = auth.uid()
  )
);