Back to skills
SKILL.md
Advanced Use Latest
ASecurityuseLatest for Stable Callback Refs. Use when you need help with advanced use latest.
- 8 stars
- 0 votes
- 0 copies
- 2 views
- Added September 8, 2026
Security analysis
100/100npx -y skills add anubhavg-icpl/vibe --skill advanced-use-latest --agent claude-codeAre you the author of Advanced Use Latest?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/anubhavg-icpl-advanced-use-latest)---
name: advanced-use-latest
description: useLatest for Stable Callback Refs. Use when you need help with advanced use latest.
license: CC-BY-NC-SA-4.0
metadata:
risk: unknown
source: community
kind: mode
category: rules
---
## useLatest for Stable Callback Refs
Access latest values in callbacks without adding them to dependency arrays. Prevents effect re-runs while avoiding stale closures.
**Implementation:**
```typescript
function useLatest<T>(value: T) {
const ref = useRef(value);
useEffect(() => {
ref.current = value;
}, [value]);
return ref;
}
```
**Incorrect (effect re-runs on every callback change):**
```tsx
function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
const [query, setQuery] = useState("");
useEffect(() => {
const timeout = setTimeout(() => onSearch(query), 300);
return () => clearTimeout(timeout);
}, [query, onSearch]);
}
```
**Correct (stable effect, fresh callback):**
```tsx
function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
const [query, setQuery] = useState("");
const onSearchRef = useLatest(onSearch);
useEffect(() => {
const timeout = setTimeout(() => onSearchRef.current(query), 300);
return () => clearTimeout(timeout);
}, [query]);
}
```
Attribution
Comments
Loading comments…