mirror of
https://github.com/supabase/supabase.git
synced 2026-09-08 10:59:38 +08:00
- Most changes are related to either types or `useRef` usages (it now requires an initial value). - also updated `vaul` to its latest version and haven't noticed any change ([design-system demo](https://design-system-git-react-19-supabase.vercel.app/design-system/docs/components/drawer)) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Upgraded workspace to React 19. * **Bug Fixes** * Improved null-safety and ref handling across editors, UI components, shortcuts, and markdown/image rendering to reduce runtime errors. * Safer event/timeout/interval cleanup and more robust command/context handling. * **Chores** * Bumped vaul dependency versions. * **Documentation** * Type and TypeScript accuracy improvements for clearer developer feedback. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/supabase/supabase/pull/45886) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai -->
20 lines
365 B
TypeScript
20 lines
365 B
TypeScript
'use client'
|
|
|
|
// based on https://github.com/Andarist/use-constant
|
|
import { useRef } from 'react'
|
|
|
|
type ResultBox<T> = { v: T }
|
|
|
|
/**
|
|
* React hook for creating a value exactly once
|
|
*/
|
|
export function useConstant<T>(fn: () => T): T {
|
|
const ref = useRef<ResultBox<T> | null>(null)
|
|
|
|
if (!ref.current) {
|
|
ref.current = { v: fn() }
|
|
}
|
|
|
|
return ref.current.v
|
|
}
|