Drop a single <script type="speculationrules"> JSON block into your HTML and the browser will prefetch or fully prerender the URLs you nominate before the user clicks them. With a prerender rule and moderate eagerness, hover-to-paint latency on a typical content site collapses from 400-900 ms to under 50 ms, and you do not need Next.js
, Astro
, or any client router to get there. It is a plain platform feature shipping in Chromium-based browsers, with Firefox and Safari tracking the spec at the WICG.
Web Dev
Modern web development from someone who builds it. CSS, JavaScript, web standards, and the patterns that actually scale.
Make navigation feel instant with the Speculation Rules API, no framework
The HTML popover attribute nobody warned you about just killed your modal JS
The HTML popover attribute gives you dropdown menus, tooltips, and lightweight modals using nothing but markup and CSS. No JavaScript library, no React state, no z-index: 99999 hacks. A <button popovertarget="menu"> paired with a <div popover id="menu"> handles top-layer rendering, light-dismiss on outside clicks, Escape to close, and basic focus moves. It is all built into the browser. As of 2026, the Popover API
is a Baseline feature in Chrome 114+, Firefox 132+, Safari 17+, and Edge 114+, covering over 91% of browser traffic.
Bun vs Deno vs Node.js: which JavaScript runtime actually wins in 2026?
Which JavaScript runtime wins in 2026:
- Node.js is still the safe default for production work that needs maximum ecosystem compatibility.
- Bun has the fastest startup, installs, and test runner, and is the best fit for new projects that prioritize developer experience.
- Deno is the most secure by default and the best TypeScript-first experience. Since the 2.9 release, it’s also the fastest at raw HTTP throughput on my test bench.
All three are production-ready in 2026, so the decision should come down to your constraints rather than benchmark headlines.
Svelte 5 runes quietly rewrote how reactivity works
Svelte 5
replaces the old let plus $: reactivity model with runes, a small set of compiler-recognized functions that look like normal JavaScript but get rewritten into fine-grained reactive code. Instead of declaring let count = 0 and hoping the compiler infers a reactive binding, you write let count = $state(0). Instead of $: doubled = count * 2, you write let doubled = $derived(count * 2). Instead of $: console.log(count), you reach for $effect(() => console.log(count)). Props become let { name } = $props().
Turso puts SQLite reads under a millisecond, anywhere in the world
Turso is a distributed SQLite service built on libSQL , an MIT-licensed fork of SQLite. It adds embedded replicas: local SQLite files that sync from a primary database in the cloud. Reads happen at local-disk speed, under 200 nanoseconds in benchmarks. Writes go to one primary region. You get sub-millisecond reads and read-your-writes consistency for less than a managed Postgres bill. You install the client SDK, point it at a Turso URL and a local file path, and your app reads from a replica that stays in sync on its own.
Your data table probably fails screen readers (and WCAG 2.2)
The short answer: build an interactive data table with semantic HTML (<table>, <thead>, <th scope="col">), add ARIA attributes (aria-sort, aria-live, aria-controls), and wire up keyboard handlers that enable sorting, filtering, and cell-by-cell navigation without a mouse. Done right, the result satisfies WCAG 2.2
Level AA, works for sighted users, screen reader users, and keyboard-only users, and needs no framework dependencies.
This guide walks through the markup, the ARIA attributes, the JavaScript event handlers, and the performance trade-offs you hit once your dataset gets large. The reference patterns come from the WAI-ARIA Authoring Practices Guide sortable table example and the grid pattern .
Botmonster Tech




