// writing
Posts tagged #javascript
A mix of technical deep-dives, career reflections, and dispatches from the road.
tag: #javascript

developmentNov 8, 2026· 4 min
React's browser() API: Opt Out of SSR Without the Mounted-State Hack
React 19.3 adds use(browser()), a first-class way to mark a component browser-only during SSR, replacing typeof window checks and useEffect mounted flags.
read more →

developmentNov 5, 2026· 4 min
Oxlint JS Plugins: Your Custom ESLint Rules No Longer Keep You on ESLint
Oxlint now runs ESLint plugins and your own custom rules, so the last excuse for a slow lint step is gone. Here's how JS plugins work and where the gaps are.
read more →

developmentNov 2, 2026· 4 min
GraphQL @defer: Stop Letting Your Slowest Field Set Your Load Time
One slow resolver can hold a whole GraphQL response hostage. Here's how @defer and @stream split a query into an initial payload and patches, and what to check.
read more →

developmentNov 1, 2026· 4 min
bfcache: The Instant Back Button Your Site Is Probably Blocking
The back/forward cache restores pages from memory instantly, but an unload listener or no-store header can opt you out. Here's how to find and fix the blockers.
read more →

developmentOct 25, 2026· 3 min
JSON.parse Source Text Access: Stop Losing Precision on Big IDs
JSON.parse can now hand your reviver the original source text of numbers, and JSON.rawJSON writes it back exactly. Here's how to round-trip big IDs.
read more →

developmentOct 19, 2026· 4 min
React Fragment Refs: Attach Behavior Without the Wrapper Div
React 19.3 made Fragment refs stable. Here's how FragmentInstance lets you listen, observe, and move focus across a group of elements without a wrapper div.
read more →

developmentOct 15, 2026· 4 min
Svelte Error Boundaries: Contain the Crash Instead of Losing the Page
One flaky widget shouldn't blank your whole app. Here's how Svelte's boundary element walls off failures, shows loading UI for await, and works during SSR.
read more →

developmentOct 12, 2026· 4 min
Dependency Cooldowns: Make Your Package Manager Wait Before It Trusts New Code
npm, pnpm, Yarn, and Bun can all refuse package versions that are only hours old. Here's how each release-age gate works, why units differ, and where CI bites.
read more →

developmentOct 8, 2026· 3 min
Map.getOrInsert: Stop Writing the has/get/set Dance
Map and WeakMap now have getOrInsert and getOrInsertComputed, two methods that replace the check-then-set boilerplate every JavaScript codebase is full of.
read more →

developmentOct 5, 2026· 3 min
Astro Live Content Collections: Fresh CMS Data Without a Rebuild
Astro's live content collections fetch CMS and API data at request time with the same typed API as build-time collections, and route caching keeps them fast.
read more →
// the newsletter