- TypeScript 7.0 goes native: the compiler is now a Go port (
tsgo) with roughly 10x faster builds — butstrictis on by default and legacy module settings are gone. - Vite 8.1 ships an experimental bundled dev mode: ~15x faster startup and ~10x faster reloads on large apps, plus native WebAssembly imports.
- CSS levels up: Gap Decorations reach stable,
field-sizing: contentgoes cross-browser, and scroll methods now return Promises. - Patch alert: Express shipped security fixes for multer, morgan and multiparty; MySQL 8.4.10 / 9.7.1 and PostgreSQL 18.4 also carry security releases.
Web Development — Top of the Day
1. TypeScript 7.0 ships — the Go-native compiler is GA
The rewritten native tsc (the tsgo project) lands as stable, with roughly 10x faster type-checking — VS Code’s typecheck fell from ~125s to ~11s — plus 6–26% lower memory and new --checkers parallelism. (v7.0 — July 8, 2026)
npm install -D typescript@7.0
npx tsc --checkers 8 # more type-checking workers on big repos2. Vite 8.1 lands an experimental bundled dev mode
The new mode reports ~15x faster startup and ~10x faster full reloads on large apps, plus native WebAssembly ESM imports and an experimental chunk import map for better caching. (v8.1 — June 23, 2026)
// Native WASM ESM import - no ?init wrapper needed
import { add } from './math.wasm';
console.log(add(1, 2));3. CSS Gap Decorations reach stable Chromium
The new column-rule / row-rule (and rule-break) draw lines in the gaps of grid and flex layouts natively, with animatable width and color. (Chrome 149 — 2026)
.grid {
display: grid;
gap: 1rem;
row-rule: 1px solid #cbd5e1;
column-rule: 1px dashed #cbd5e1;
}4. field-sizing: content is now cross-browser
Firefox 152 shipped it, joining Chrome, Edge and Safari, so <textarea>, <input> and <select> auto-grow to fit their content with a single line. (Firefox 152 — June 2026)
textarea {
field-sizing: content;
max-block-size: 10lh;
}5. Programmatic scroll now returns a Promise
In Chrome 150, scrollTo(), scrollBy() and scrollIntoView() return a Promise that resolves when the smooth scroll finishes. (Chrome 150 — June 2026)
await el.scrollIntoView({ behavior: 'smooth' });
highlight(el); // runs after the scroll completessetTimeout guessing to run code after a scroll animation settles.6. ariaNotify() brings imperative screen-reader announcements
Firefox 150 adds Document.ariaNotify() / Element.ariaNotify() to push announcements to assistive tech without wiring up an ARIA live-region in the DOM. (Firefox 150 — April 21, 2026)
element.ariaNotify('File saved');7. React Compiler 1.0 is stable
The compiler auto-memoizes components and hooks at build time, so hand-written useMemo / useCallback / memo become largely unnecessary. (v1.0 — Oct 7, 2025)
npm install -D babel-plugin-react-compiler@latest eslint-plugin-react-hooks@latestCore Tech — Latest Updates
</> HTML
1. The focusgroup attribute
A declarative attribute that wires arrow-key navigation across composite widgets (toolbars, menus, tabs), with a single tab stop and last-focused memory — replacing manual roving tabindex. (Chrome 150 — June 2026)
<div role="toolbar" focusgroup="wrap" aria-label="Formatting">
<button>Bold</button><button>Italic</button><button>Underline</button>
</div>2. sizes="auto" for lazy-loaded images
Firefox 150 supports sizes="auto" on <img>, so lazy-loaded images use their real layout size to pick a candidate from srcset. (Firefox 150 — April 21, 2026)
<img loading="lazy" sizes="auto"
srcset="small.jpg 400w, large.jpg 800w"
src="large.jpg" alt="">sizes attribute.3. Native lazy loading for <video> and <audio>
loading="lazy" now works on <video> and <audio>, mirroring existing image and iframe support. (Chrome 148 — May 2026)
<video loading="lazy" src="clip.mp4" controls></video></> CSS
1. Container Style Queries become Baseline
With Firefox 151 shipping style-based container queries, @container style(--prop: value) is Baseline newly available — style elements based on a parent container’s custom properties. (Baseline — May 2026)
@container style(--theme: dark) {
.card { background: #111; color: #eee; }
}2. background-clip: border-area
A new background-clip value that clips a background to the border stroke area, honoring border-width and border-style. (Chrome 150 — June 2026)
.card {
border: 5px solid transparent;
background: linear-gradient(to right, #f06, #48f) border-box;
background-clip: border-area;
}border-image gymnastics.3. The :open pseudo-class completes cross-browser support
Safari 26.5 was the last engine to ship :open, which matches open-state elements (<details>, <dialog>, <select> and picker inputs). (Safari 26.5 — May 11, 2026)
select:open { border: 1px solid skyblue; }details[open]-style attribute matching.</> JavaScript
1. Map.prototype.getOrInsert() (Upsert) reaches Stage 4
Adds getOrInsert and getOrInsertComputed (with WeakMap equivalents) to get-or-insert in a single step. (Stage 4 — Jan 2026)
const counts = new Map();
counts.getOrInsert('a', 0);
counts.getOrInsertComputed('b', () => compute());if (!map.has(k)) map.set(k, ...) pattern for counters and grouping.2. JSON source-text access reaches Stage 4
The JSON.parse reviver now receives a context argument exposing each value’s original source text, plus a JSON.rawJSON companion for safe re-serialization. (Stage 4 — Nov 2025)
JSON.parse('{"big": 12345678901234567890}', (key, value, ctx) =>
key === 'big' ? BigInt(ctx.source) : value
);3. Iterator Sequencing (Iterator.concat) reaches Stage 4
Adds a static Iterator.concat(...iterables) that lazily chains multiple iterators into one sequence. (Stage 4 — Nov 2025)
const all = Iterator.concat([1, 2].values(), [3, 4].values());
[...all]; // [1, 2, 3, 4]</> TypeScript
1. TypeScript 7.0 GA — native Go compiler
tsc is now native code (tsgo), roughly 10x faster with lower memory usage. (v7.0 — July 8, 2026)
npm install -D typescript@7.0
npx tsc --noEmit # native speed2. TS 7.0 breaking changes & stricter defaults
target: es5 is dropped, node/node10 resolution is removed in favor of nodenext, AMD/UMD/SystemJS emit is gone, and strict is on by default. (v7.0 — July 8, 2026)
{ "compilerOptions": { "module": "nodenext", "moduleResolution": "nodenext" } }
// strict: true is now impliedtsconfig.json before upgrading — the defaults changed.3. TypeScript 6.0 as the bridge release
6.0 (March 23, 2026) is the final release built on the original JavaScript codebase and aligns deprecations so it can run side by side with 7.0 during migration. (v6.0 — March 23, 2026)
npm install -D typescript@6 # keep 6.0 while validating 7.0</> React
1. React 19.2 — useEffectEvent
A stable hook that extracts non-reactive “event” logic out of an Effect, so changing values like theme no longer re-trigger it. (v19.2 — Oct 1, 2025)
const onConnected = useEffectEvent(() => {
showNotification('Connected!', theme); // reads latest theme
});
useEffect(() => {
const conn = createConnection(serverUrl, roomId);
conn.on('connected', () => onConnected());
conn.connect();
return () => conn.disconnect();
}, [roomId]);2. React 19.2 — the <Activity> component
<Activity mode="visible" | "hidden"> keeps a subtree mounted but hidden, unmounting its effects and deferring updates until React is idle. (v19.2 — Oct 1, 2025)
<Activity mode={isVisible ? 'visible' : 'hidden'}>
<Page />
</Activity>3. Security: critical RCE in React Server Components patched
A critical RCE in RSC was patched in 19.0.1 / 19.1.2 / 19.2.1 (Dec 3, 2025), with two follow-up DoS/source-exposure advisories on Dec 11, 2025. (Dec 2025)
npm install react@19.2.1 react-dom@19.2.1</> shadcn/ui
1. Base UI is the new default
New projects scaffold on Base UI instead of Radix, with every component rebuilt on the same abstraction. Radix stays fully supported via a flag. (July 2026)
npx shadcn init # Base UI by default
npx shadcn init -b radix # opt back into Radix2. shadcn/typeset
A CSS-based typographic system: add the typeset class to a container and headings, paragraphs, lists, tables and code get styled, tunable via --typeset-size, --typeset-leading and --typeset-flow. (July 2026)
<article class="typeset typeset-docs">...</article>3. Chat interface components + @shadcn/react
New primitives for chat UIs — MessageScroller, Message, Bubble, Attachment, Marker — plus scroll-fade and shimmer utilities and an unstyled @shadcn/react headless package. (June 2026)
import { MessageScroller, Message, Bubble } from "@/components/ui/chat";
<MessageScroller>
{messages.map((m) => (
<Message key={m.id} from={m.role}><Bubble>{m.content}</Bubble></Message>
))}
</MessageScroller></> Tailwind CSS
1. v4.3 — first-party scrollbar utilities
Native scrollbar styling: scrollbar-thin, scrollbar-thumb-*, scrollbar-track-*, and scrollbar-gutter-stable. (v4.3.0 — May 8, 2026)
<div class="scrollbar-thin scrollbar-thumb-sky-700 scrollbar-track-sky-100 overflow-y-scroll">...</div>2. v4.3 — zoom-* and tab-* utilities
New zoom-* utilities map to the CSS zoom property, and tab-* utilities control tab-character width in preformatted text. (v4.3.0 — May 8, 2026)
<pre class="tab-4">code</pre>3. v4.1 — text shadows and mask utilities
Added the long-missing text-shadow-* utilities and a full set of mask-* (mask-image) utilities. (v4.1.0 — April 3, 2025)
<h1 class="text-shadow-lg">Headline</h1></> Bootstrap
1. Bootstrap 5.3.8 — WCAG color-contrast fix
The Sass color-contrast() function was corrected for WCAG 2.1 compliance, alongside a spinner-in-flex distortion fix. (v5.3.8 — Aug 25, 2025; current stable)
.badge { color: color-contrast($primary); } // now WCAG 2.1-correct2. 5.3.6 — .visually-hidden fix + Astro docs
A fix preventing .visually-hidden children from being focusable, plus the docs migrating from Hugo to Astro and .card-group selectors scoped to immediate children. (v5.3.6 — May 5, 2025)
<span class="visually-hidden">Loading...</span>3. Bootstrap Icons v1.13
The icon set pushed past 2,000 icons, adding new glyphs including Bluesky branding. (Icons v1.13 — May 9, 2025)
<i class="bi bi-bluesky"></i></> Node.js
1. Node.js 26.5.0 — --experimental-import-text
A new flag lets you import text files directly via import attributes (with { type: 'text' }), mirroring the TC39 Import Text proposal. (v26.5.0 — July 8, 2026)
// node --experimental-import-text app.mjs
import greeting from './greeting.txt' with { type: 'text' };fs.readFile boilerplate.2. Node.js 26.5.0 — blob.textStream()
Blob gains a textStream() method for streaming its text, the internal ReadableStreamTee is exposed, and perf_hooks gains per-iteration event-loop delay sampling. (v26.5.0 — July 8, 2026)
const blob = new Blob(['hello world']);
for await (const chunk of blob.textStream()) console.log(chunk);3. Node.js 24.18.0 is the current Active LTS
v24.18.0 (June 23, 2026) is the latest Active LTS release, with Maintenance LTS v22.23.1 alongside; the 26.x series remains the non-LTS “Current” line. (v24.18.0 LTS — June 23, 2026)
nvm install --lts
node --version # v24.18.0</> Express
1. June 2026 security releases — multer & morgan
Fixes for two DoS issues in multer (deeply-nested field-name DoS and orphaned-file disk exhaustion) and a log-forging flaw in morgan; patched in multer ≥ 2.2.0 and morgan ≥ 1.11.0. (June 30, 2026)
npm install multer@^2.2.0 morgan@^1.11.02. May 2026 security releases — multiparty
multiparty ≤ 4.2.3 is vulnerable to a filename ReDoS, a prototype-pollution crash, and a filename* decode crash; all fixed in 4.3.0. (May 31, 2026)
npm install multiparty@^4.3.03. Express 5.1.0 is the default on npm
Express 5.1.0 sits on the latest tag, so npm install express now installs v5, with an official LTS timeline for the v5 line. (v5.1.0 — current default)
const express = require('express'); // installs 5.x by default
const app = express();
app.get('/', async (req, res) => res.send('Express 5')); // async errors auto-forward
app.listen(3000);</> MySQL
1. MySQL 9.7.0 — Hypergraph optimizer in Community Edition
The Hypergraph query optimizer, previously Enterprise-only, is now available in MySQL Community Server and toggled via optimizer_switch. (9.7.0 Innovation — April 21, 2026)
SET SESSION optimizer_switch = 'hypergraph_optimizer=on';2. MySQL 9.7.0 — JSON Duality Views gain DML in Community
INSERT, UPDATE and DELETE against JSON Duality Views (including auto-increment support) are now available in Community Server, not just DDL. (9.7.0 Innovation — April 21, 2026)
UPDATE orders_dv
SET data = JSON_SET(data, '$.status', 'shipped')
WHERE data->>'$._id' = '1001';3. MySQL 8.4.10 (LTS) & 9.7.1 — June 2026 Critical Patch Update
Both releases deliver the security fixes from Oracle’s Critical Patch Update Advisory of June 2026. (June 16, 2026)
SELECT VERSION(); -- expect '8.4.10' (LTS) or '9.7.1' (Innovation)</> Next.js
1. Next.js 16.3 (Preview) — Instant Navigations
An opt-in system (behind cacheComponents: true) giving SPA-style instant navigations, with each awaited route resolving as Stream, Cache or Block, plus dev-time “Instant Insights” that flag slow routes. (v16.3 Preview — June 25, 2026)
// next.config.ts
const nextConfig = { cacheComponents: true };
export default nextConfig;2. Next.js 16.3 (Preview) — Partial Prefetching
Instead of a prefetch request per link, Next.js prefetches one reusable route “shell” and caches it client-side, enabled with partialPrefetching: true. (v16.3 Preview — June 25, 2026)
// next.config.ts
const nextConfig = { cacheComponents: true, partialPrefetching: true };
export default nextConfig;3. Next.js 16.2 (stable) — faster RSC + new debugging APIs
~50% faster rendering, ~400% faster next dev startup, a stable Adapters API, next start --inspect, Server Function terminal logging, and a transitionTypes prop on next/link. (v16.2 — March 18, 2026)
<Link href="/about" transitionTypes={['slide']}>About</Link>Other Languages, Frameworks & Databases
1. Vue — 3.6 Vapor Mode feature-complete
Vue’s Vapor Mode (a compile strategy that renders with no Virtual DOM) has reached parity with all stable VDOM features except Suspense, iterating through betas. (v3.6.0-beta.17 — June 24, 2026)
import { createVaporApp } from 'vue';
import App from './App.vue';
createVaporApp(App).mount('#app');2. Angular v22
Signal Forms, Asynchronous Signals and Angular Aria graduated to stable, continuing the signals-first direction. (v22.0 — June 3, 2026)
const count = signal(0);
const double = computed(() => count() * 2);
count.set(5); // double() === 103. PostgreSQL 19 Beta 2
The second beta marks feature freeze and continues testing SQL/PGQ property-graph queries, temporal tables via FOR PORTION OF, and a unified REPACK command. (19 Beta 2 — July 16, 2026)
UPDATE employees
FOR PORTION OF valid_period FROM DATE '2026-01-01' TO DATE '2026-06-30'
SET department = 'Engineering' WHERE id = 42;4. PostgreSQL security batch (18.4 / 17.10 / 16.14 / 15.18 / 14.23)
The May minor release fixed 11 CVEs (several CVSS 8.8) and 60+ bugs across all branches, and flags PostgreSQL 14 EOL on Nov 12, 2026. (May 14, 2026)
SELECT version(); -- 18.4 / 17.10 / 16.14 / 15.18 / 14.235. Redis Open Source 8.8.0
Adds a native Array data structure, the INCREX windowed rate-limiter (atomic increment + bounds + expiry in one command), an XNACK streams command, and hash-field subkey notifications. (v8.8.0 — May 25, 2026)
# 8.8 adds INCREX for atomic windowed rate limiting
INCR requests:api # classic counter (INCREX bundles limit + expiry)6. Drizzle ORM v1.0.0 Release Candidate
Progressed to RC with opt-in JIT row mappers (~25–30% latency cut), Effect v4 support, a Netlify Database driver, and a breaking casing API; a separate v0.45.2 patch fixed a SQL-injection issue in sql.identifier() / sql.as(). (v1.0.0-rc — 2026)
import { defineRelations } from 'drizzle-orm';
export const relations = defineRelations(schema, (r) => ({
users: { posts: r.many.posts() },
}));7. Prisma Compute — Public Beta
TypeScript app hosting (built on Bun) that runs on the same infrastructure as your Prisma Postgres database, with per-branch app+DB environments, immutable preview URLs, and scale-to-zero. (June 8, 2026)
8. Supabase — Series F and Multigres
Supabase raised a $500M Series F and released Multigres v0.1 Alpha (“Vitess for Postgres”), an Apache-2.0 Postgres operating layer with consensus-based HA, connection pooling, and a Kubernetes operator. (June 4, 2026)
9. Python 3.14.6
The sixth maintenance release of the Python 3.14 line (~179 bug fixes since 3.14.5); the flagship 3.14 features remain PEP 750 t-strings and free-threaded (no-GIL) builds. (v3.14.6 — June 10, 2026)
name = "World"
greeting = t"Hello {name}" # a Template, not a str (PEP 750)10. Java — JDK 26.0.1 Critical Patch Update
The quarterly security and bug-fix update to JDK 26 (includes tzdata 2026a and a GZIPInputStream regression fix); JDK 26 GA earlier shipped HTTP/3 in the HTTP Client and Structured Concurrency. (v26.0.1 — April 21, 2026)
switch (obj) {
case Integer i -> System.out.println("int: " + i);
case String s -> System.out.println("str: " + s);
default -> System.out.println("other");
}11. C / C++ — GCC 16.1
GCC 16.1 moves the default C++ dialect to GNU C++20 and adds experimental C++26 support for Reflection (-freflection), Contracts, expansion statements and std::simd. (GCC 16.1 — April 30, 2026)
// g++ -std=c++26 -freflection main.cpp
#include <experimental/meta>
constexpr auto r = ^^int; // reflect on a type12. Data science — pandas 3.0.4, NumPy 2.5.0, Polars 1.42
pandas 3.0.4 fixes 3.0 regressions and hardens to_sql() quoting; NumPy 2.5.0 adds native descending sorts and stronger free-threaded support (dropping distutils and Python 3.11); Polars 1.42 adds adaptive cloud I/O concurrency for Parquet/IPC (up to ~2x). (Late June 2026)
import numpy as np
np.sort(a, descending=True) # native descending sort in 2.5.013. DevOps — Docker Desktop 4.80.0 & Kubernetes v1.36 “Haru”
Docker Desktop 4.80.0 bundles Kubernetes v1.36.1 and Buildx v0.35.0 and removes legacy Mac osxfs; Kubernetes v1.36 ships 70 enhancements with 18 features to Stable, including User Namespaces GA and volume group snapshots GA. (April–June 2026)
spec:
hostUsers: false # User Namespaces GA in v1.36
Discussion