Code Explainers
Code explainers tagged #cleanup
javascript
import { useState, useEffect, useCallback } from 'react'; function getColumnCount(width) { if (width < 640) return 1;
A responsive column hook in React
custom-hooks
debouncing
responsive-design
Intermediate
7 steps
javascript
function initCharacterCounter(textarea, options = {}) { const maxLength = options.maxLength ?? 280; const warnThreshold = options.warnThreshold ?? 0.9;
A live character counter for textareas
dom
closures
accessibility
Intermediate
7 steps
javascript
function autoResizeTextarea(textarea, { maxHeight = Infinity } = {}) { const resize = () => { textarea.style.height = 'auto'; const contentHeight = textarea.scrollHeight;
Auto-resizing a textarea to fit its content
dom
event-listener
cleanup
Intermediate
7 steps
javascript
import { useEffect, useState } from 'react'; export function useJobStatus(jobId, { interval = 3000 } = {}) { const [status, setStatus] = useState('pending');
Polling a job status with a React hook
custom-hooks
polling
cleanup
Intermediate
8 steps
typescript
type Handler = (event: KeyboardEvent) => void; interface Binding { combo: string;
Building a keyboard shortcut manager in TypeScript
event-handling
normalization
closures
Intermediate
7 steps
javascript
const express = require('express'); const EventEmitter = require('events'); const router = express.Router();
Server-Sent Events with Express
server-sent-events
streaming
event-emitter
Advanced
8 steps
javascript
import { useState, useEffect, useCallback } from 'react'; export function useCountdown(initialSeconds) { const [secondsLeft, setSecondsLeft] = useState(initialSeconds);
Building a useCountdown hook in React
custom-hooks
state-management
side-effects
Intermediate
8 steps
javascript
import { useEffect, useRef } from "react"; import { useBlocker } from "react-router-dom"; export function useUnsavedChangesPrompt(isDirty, message = "You have unsaved changes. Leave anyway?") {
Guarding unsaved changes with a React hook
custom-hooks
navigation-guard
event-listeners
Intermediate
7 steps
typescript
type ResizeCallback = (size: { width: number; height: number }) => void; export function observeResize(callback: ResizeCallback, delay = 150) { let timeoutId: ReturnType<typeof setTimeout> | undefined;
Debouncing window resize in TypeScript
debounce
closures
event-listeners
Intermediate
6 steps
javascript
import { useState, useRef, useEffect, useCallback } from 'react'; export function CopyButton({ text, label = 'Copy' }) { const [copied, setCopied] = useState(false);
A copy-to-clipboard button in React
clipboard-api
hooks
cleanup
Intermediate
7 steps
javascript
import { useState, useRef, useCallback, useLayoutEffect } from "react"; export function useResizeObserver({ debounce = 0 } = {}) { const [size, setSize] = useState({ width: 0, height: 0 });
A resize-observing hook in React
custom-hook
resizeobserver
callback-ref
Advanced
8 steps
typescript
import { useEffect, useRef, useState } from "react"; export function useClickOutside<T extends HTMLElement>() { const ref = useRef<T>(null);
A dismiss-on-outside-click hook in React
custom-hooks
event-listeners
cleanup
Intermediate
7 steps
typescript
import { useEffect, useRef, useCallback } from "react"; type DraftPayload = Record<string, unknown>;
A debounced auto-save hook in React
debouncing
request-cancellation
refs
Advanced
7 steps
python
import shutil import uuid from pathlib import Path
Safe avatar uploads in FastAPI
file-upload
validation
streaming
Intermediate
8 steps
javascript
import { useEffect, useRef, useState } from "react"; export function Dropdown({ label, children }) { const [open, setOpen] = useState(false);
Closing a dropdown on outside click in React
outside-click
event-listeners
cleanup
Intermediate
8 steps
ruby
class PurgeStaleExportsJob < ApplicationJob queue_as :maintenance retry_on ActiveRecord::Deadlocked, wait: :polynomially_longer, attempts: 5
Purging stale exports with an Active Job in Rails
background-jobs
batching
error-handling
Intermediate
7 steps
javascript
import { useCallback, useEffect, useRef, useState } from 'react'; export function useInfiniteScroll(fetchPage) { const [items, setItems] = useState([]);
Building an infinite scroll hook in React
custom-hooks
intersection-observer
pagination
Advanced
6 steps
javascript
import { useState, useEffect } from "react"; export function useUser(userId) { const [user, setUser] = useState(null);
How a data-fetching hook works in React
custom-hooks
data-fetching
abortcontroller
Intermediate
8 steps