mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
* chore(ai-workflow): track repo-managed review tooling * fix(ai-workflow): remove repo-specific path assumptions Make shared workflow hooks and APK testing guidance resolve paths from the repo and contributor environment so the tooling works for all contributors, not just one machine.
51 lines
1.1 KiB
Markdown
51 lines
1.1 KiB
Markdown
---
|
|
title: Preload Based on User Intent
|
|
impact: MEDIUM
|
|
impactDescription: reduces perceived latency
|
|
tags: bundle, preload, user-intent, hover
|
|
---
|
|
|
|
## Preload Based on User Intent
|
|
|
|
Preload heavy bundles before they're needed to reduce perceived latency.
|
|
|
|
**Example (preload on hover/focus):**
|
|
|
|
```tsx
|
|
function EditorButton({ onClick }: { onClick: () => void }) {
|
|
const preload = () => {
|
|
if (typeof window !== 'undefined') {
|
|
void import('./monaco-editor')
|
|
}
|
|
}
|
|
|
|
return (
|
|
<button
|
|
onMouseEnter={preload}
|
|
onFocus={preload}
|
|
onClick={onClick}
|
|
>
|
|
Open Editor
|
|
</button>
|
|
)
|
|
}
|
|
```
|
|
|
|
**Example (preload when feature flag is enabled):**
|
|
|
|
```tsx
|
|
function FlagsProvider({ children, flags }: Props) {
|
|
useEffect(() => {
|
|
if (flags.editorEnabled && typeof window !== 'undefined') {
|
|
void import('./monaco-editor').then(mod => mod.init())
|
|
}
|
|
}, [flags.editorEnabled])
|
|
|
|
return <FlagsContext.Provider value={flags}>
|
|
{children}
|
|
</FlagsContext.Provider>
|
|
}
|
|
```
|
|
|
|
The `typeof window !== 'undefined'` check prevents bundling preloaded modules for SSR, optimizing server bundle size and build speed.
|