diff --git a/src/contexts/LibrariesOverlayContext.tsx b/src/contexts/LibrariesOverlayContext.tsx
index 71dc8a760..4c91f9a60 100644
--- a/src/contexts/LibrariesOverlayContext.tsx
+++ b/src/contexts/LibrariesOverlayContext.tsx
@@ -1,6 +1,11 @@
import * as React from 'react'
import { useLocation } from '@tanstack/react-router'
-import { LibrariesOverlay } from '~/components/LibrariesOverlay'
+
+const LazyLibrariesOverlay = React.lazy(() =>
+ import('~/components/LibrariesOverlay').then((m) => ({
+ default: m.LibrariesOverlay,
+ })),
+)
interface LibrariesOverlayContextValue {
openLibraries: (options?: { onBack?: () => void }) => void
@@ -35,6 +40,7 @@ export function LibrariesOverlayProvider({
children: React.ReactNode
}) {
const [isOpen, setIsOpen] = React.useState(false)
+ const [hasLoadedOverlay, setHasLoadedOverlay] = React.useState(false)
const [returnTarget, setReturnTarget] = React.useState<{
onBack: () => void
} | null>(null)
@@ -42,6 +48,7 @@ export function LibrariesOverlayProvider({
const openLibraries = React.useCallback(
(options?: { onBack?: () => void }) => {
setReturnTarget(options?.onBack ? { onBack: options.onBack } : null)
+ setHasLoadedOverlay(true)
setIsOpen(true)
},
[],
@@ -74,11 +81,15 @@ export function LibrariesOverlayProvider({
return (
{children}
-
+ {hasLoadedOverlay ? (
+
+
+
+ ) : null}
)
}
diff --git a/src/contexts/LoginModalContext.tsx b/src/contexts/LoginModalContext.tsx
index bf7c27865..2280c6484 100644
--- a/src/contexts/LoginModalContext.tsx
+++ b/src/contexts/LoginModalContext.tsx
@@ -1,8 +1,11 @@
import * as React from 'react'
import { useQueryClient } from '@tanstack/react-query'
-import { LoginModal } from '~/components/LoginModal'
import { currentUserQueryOptions } from '~/hooks/useCurrentUser'
+const LazyLoginModal = React.lazy(() =>
+ import('~/components/LoginModal').then((m) => ({ default: m.LoginModal })),
+)
+
interface LoginModalContextValue {
openLoginModal: (options?: {
description?: string
@@ -38,6 +41,7 @@ interface LoginModalProviderProps {
export function LoginModalProvider({ children }: LoginModalProviderProps) {
const queryClient = useQueryClient()
const [isOpen, setIsOpen] = React.useState(false)
+ const [hasLoadedModal, setHasLoadedModal] = React.useState(false)
const [description, setDescription] = React.useState()
const pendingOnSuccessRef = React.useRef<(() => void) | undefined>(undefined)
@@ -45,6 +49,7 @@ export function LoginModalProvider({ children }: LoginModalProviderProps) {
(options?: { description?: string; onSuccess?: () => void }) => {
pendingOnSuccessRef.current = options?.onSuccess
setDescription(options?.description)
+ setHasLoadedModal(true)
setIsOpen(true)
},
[],
@@ -89,11 +94,15 @@ export function LoginModalProvider({ children }: LoginModalProviderProps) {
return (
{children}
-
+ {hasLoadedModal ? (
+
+
+
+ ) : null}
)
}