mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 17:35:10 +03:00
Live mode polled every 10 seconds for as long as the page stayed open, including in hidden tabs and tabs left unattended for hours. Move the polling loop into a useLivePolling hook that: - stops polling while the tab is hidden and polls immediately when it is visible again - pauses live mode after 15 minutes of visible time with no pointer, key, wheel, or scroll activity, with a notice to resume it - backs off from 10s to 20s, 40s, then 60s while polls find no new rows, resetting on new rows, activity, or the tab becoming visible Track clicks on the notice's "Resume live mode" button (unified_logs_live_mode_resume_button_clicked). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Writing components
Where to create your components
- For components that declare the general structure and layout of a page:
/components/layouts/xxx
- For components that are tightly coupled to a specific interface:
/components/interfaces/xxx
- For components that are meant to be reusable across multiple pages:
/components/ui/xxx
- Note: We're gradually moving files out of the
to-be-cleanedfolder into the respective folders as we refactor
Component structure
- If a component has constants and utility methods that are tightly coupled to itself, keep them close to the component and enclose them in a folder with an
index.tsxas an entry point - Otherwise it can just be a file on its own
- For example:
-
components/ui - SampleComponentA - SampleComponentA.tsx - SampleComponentA.constants.ts - SampleComponentA.utils.ts - SampleComponentA.types.ts - index.ts - SampleComponentB.tsx
-
Template for building components
// Declare the prop types of your component
interface ComponentAProps {
sampleProp: string
}
// Name your component accordingly — use a named export, not a default export
export const ComponentA = ({ sampleProp }: ComponentAProps) => {
return <div>ComponentA: {sampleProp}</div>
}