23 Nov 2025

feedHacker News

GCC SC approves inclusion of Algol 68 Front End

Comments

23 Nov 2025 2:18am GMT

Meta buried 'causal' evidence of social media harm, US court filings allege

Comments

23 Nov 2025 1:09am GMT

Germany to classify date rape drugs as weapons to ensure justice for survivors

Comments

23 Nov 2025 1:00am GMT

22 Nov 2025

feedLinuxiac

KDE Plasma 6.6 Will Introduce Per-Window Screen-Recording Exclusions

KDE Plasma 6.6 Will Introduce Per-Window Screen-Recording Exclusions

KDE Plasma 6.6 desktop environment will introduce per-window screen-recording exclusions, richer blur effects for dark themes, and more.

22 Nov 2025 3:28pm GMT

Bottles 60.0 Launches with Native Wayland Support

Bottles 60.0 Launches With Native Wayland Support

Bottles 60.0, a Wine prefix manager for running Windows apps on Linux, adds native Wayland support, a refreshed UI, and more.

22 Nov 2025 1:20pm GMT

Self-Hosters Confirm It Again: Linux Dominates the Homelab OS Space

Self-Hosters Confirm It Again: Linux Dominates the Homelab OS Space

According to the 2025 Self-Host survey from selfh.st, Linux dominates self-hosting setups and homelab operating systems.

22 Nov 2025 12:04pm GMT

21 Nov 2025

feedOMG! Ubuntu

The Raspberry Pi 500+ Works as a Standalone Keyboard (Well, Kinda)

Can the Raspberry Pi 500+ work as a standalone Bluetooth keyboard? Yes, using the open-source btferret project - but not without limitations, as I report.

You're reading The Raspberry Pi 500+ Works as a Standalone Keyboard (Well, Kinda), a blog post from OMG! Ubuntu. Do not reproduce elsewhere without permission.

21 Nov 2025 11:12pm GMT

feedUbuntu blog

Open design: the opportunity design students didn’t know they were missing

What if you could work on real-world projects, shape cutting-edge technology, collaborate with developers across the world, make a meaningful impact with your design skills, and grow your portfolio… all without applying for an internship or waiting for graduation? That's what we aim to do with open design: an opportunity for universities and students of […]

21 Nov 2025 9:39am GMT

Anbox Cloud 1.28.0 is now available!

Enhanced Android device simulation, smarter diagnostics, and OIDC-enforced authentication The Anbox Cloud team has been working around the clock to release Anbox Cloud 1.28.0! We're very proud of this release that adds robust authentication, improved diagnostic tools, and expanded simulation options, making Anbox Cloud even more secure, flexible, and developer-friendly for running large-scale Android workloads. […]

21 Nov 2025 8:00am GMT

feedJavaScript Weekly

A significant Angular release

#​762 - November 21, 2025

Read on the Web

JavaScript Weekly

Google Announces Angular v21 - The Google team has gone all out with this significant release of its popular JavaScript framework. They've put together a retro game-themed adventure-based tour of what's new, along with top notch videos showing off features like its new signal-based approach to forms, MCP server for AI-powered workflows, library of headless components focused on accessibility, and even a new 'Angular AI Tutor' to get up to speed.

Google

Authentication. Complete, Not Complex -

const fusionAuth = {
builtFor: "developers",
documentedFor: "humans",
supportedBy: "experts"
};

FusionAuth sponsor

IN BRIEF:

RELEASES:

📖 Articles and Videos

Photo used with the kind permission of Rob Palmer

This week's TC39 meeting: The Ecma TC39 committee (the group behind the design of ECMAScript / JavaScript) met up for the 111th time this week (seen above) to discuss language proposals. The meeting notes won't be published for a few weeks, but several proposals did see some progress:

Note: Learn more about what the TC39 stages mean here.

Tooltip Components Should Not Exist - Dominik challenges some common wisdom in his typically erudite fashion. Stand-alone tooltip components are the wrong abstraction when separated from the underlying UI features that use them. This thinking can apply to many other UI affordances too, so the broad idea is well worth considering.

Dominik Dorfmeister (AKA TkDodo)

Agentic Postgres: Let Your Agents Cook - Build AI apps faster: Postgres with built-in memory, search, and free forkable DBs. Try it free on Tiger.

Tiger Data sponsor

Implementing Wordle in LibreOffice with JavaScript Macros - One of those fun things where the real value is in learning that you can script LibreOffice with JavaScript.

Bojidar Marinov

Automated NPM Secret Rotation in GitHub Actions - If you've built a system to automatically publish to npm, you may have had to change things due to this month's npm security changes. Here's a way to keep things ticking if you're not ready to switch to trusted publishing.

Michael Heap

Six Things I Bet You Didn't Know You Could Do With Chrome's DevTools - Part one here covers the first three, with part two covering the last three. Covers time functions, DOM observation, user action replays, and more.

Rachel Kaufman

📄 An Experiment in Making TypeScript Immutable-by-Default - "I wondered: is it possible to make TypeScript values immutable by default?" Evan Hahn

📄 How to Build Cinematic 3D Scroll Experiences with GSAP Joseph Santamaria

📄 How We Migrated 76,000 Tests from Enzyme to React Testing Library - HubSpot's tale of a big React testing migration. Charley Pugmire (HubSpot)

📄 How to 'Officially' Deprecate Methods in Node.js Code - Did you know of Node's deprecate method? Stefan Judis

🛠 Code & Tools

Webpack Bundle Analyzer 5.0: A Visual Look at Webpack's Output - An official Webpack plugin and CLI tool that shows bundle content in the form of an interactive zoomable treemap so you can dig in and see what's taking up space in your bundle (and then optimize it, ideally).

Webpack Project

TanStack DB 0.5, Now with Query-Driven Sync - TanStack DB is a client‑first reactive data store that uses differential dataflow to power live, relational queries, sub‑ms incremental updates, and seamless optimistic writes. In v0.5, a component's query becomes the API call too. "Just write your query and TanStack DB figures out exactly what to fetch."

Willis, De Parre, and Matthews

Still Writing Tests Manually? - See why modern engineering teams like Dropbox, Notion and Lattice rely on Meticulous to run E2E UI tests.

Meticulous AI sponsor

Brimstone: A New JavaScript Engine Written in Rust - Joining the hundreds of JS engines available, Brimstone has strong language support (97% of the spec), is very small, but remains a work in progress.

Hans Halverson

VueFinder: File Management Component for Vue 3 - Provides a reactive, native-like file explorer interface for users to organize, preview, and manage files.

Yusuf Özdemir

is-online 12.0: Check if the Internet Connection Is Up - Works in both Node and the browser and uses various approaches to check if the Internet is really available.

Sindre Sorhus

📰 Classifieds

Build Docker images faster with BuildKit and Depot. Parallel execution, deduplication, and auto-scaling cut CI wait times.

🎨 Try Pintura image editor for free today, add a polished cropping, rotating, and annotation experience to your web app in minutes.

The Road to Next is a course by Robin Wieruch for learning full-stack web development with Next.js 15 and React 19. The perfect match for JavaScript developers ready to go beyond the frontend.

📢 Elsewhere in the ecosystem

Some other interesting tidbits in the broader landscape:

21 Nov 2025 12:00am GMT

20 Nov 2025

feedOMG! Ubuntu

Use AirPods Pro Features on Linux with LibrePods

Linux mascot holds AirPods Pro against a bright purple and yellow backdropLibrePods brings AirPods Pro features to Linux desktops, including active noise cancellation, transparency mode, ear detection and accurate battery levels.

You're reading Use AirPods Pro Features on Linux with LibrePods, a blog post from OMG! Ubuntu. Do not reproduce elsewhere without permission.

20 Nov 2025 11:58pm GMT

19 Nov 2025

feedOMG! Ubuntu

TABS API is Mozilla’s Latest Bet on the Agentic Web

Robotic skeleton pointing at a CAPTCHA box with the text I’m not a robot while surrounded by an abstract globe and multiple blank documentsMozilla's new TABS API helps developers build AI agents to automate web tasks, as the company continues to bet on AI as its future. Details, pricing, and links inside.

You're reading TABS API is Mozilla's Latest Bet on the Agentic Web, a blog post from OMG! Ubuntu. Do not reproduce elsewhere without permission.

19 Nov 2025 4:11pm GMT

18 Nov 2025

feedUbuntu blog

83% of organizations see value in adopting open source, but report major gaps in security and governance

A new Linux Foundation report reveals how organizations worldwide are adopting, using, and perceiving open source software. The Linux Foundation's latest report, The state of global open source, has just been released in collaboration with Canonical. The report follows the Linux Foundation's European spotlight report, released earlier this year, and confirms that many of the […]

18 Nov 2025 4:10pm GMT

14 Nov 2025

feedJavaScript Weekly

Every JavaScript engine all at once

#​761 - November 14, 2025

Read on the Web

JavaScript Weekly

JavaScript Engines Zoo: Learn About Over 100 JS Engines - I'm a sucker for a big table of data and this is about as big as it gets when it comes to JavaScript engines. See how various engines compare, sort them by performance, or click on an engine's name to learn more about its development, history, and end users. The project's repo also has Dockerfiles for trying each of them out.

Ivan Krasilnikov

💡 Sticking with a theme, I've always enjoyed this ECMAScript compatibility table where you can see cross-browser and runtime support for different JavaScript features.

FlexGrid by Wijmo: The Industry-Leading JavaScript Datagrid - A fast and flexible datagrid for building modern web apps. Key features and virtualized rendering are included in the core grid module. Pick & choose special features to keep your app small. Built for JavaScript, extended to Angular, React, and Vue.

Wijmo From MESCIUS sponsor

Valdi: Snap's Newly-Open Cross-Platform UI Framework - The team behind Snapchat has open sourced this cross-platform UI framework that it's used in its production apps for eight years: "Write your UI once in declarative TypeScript, and it compiles directly to native views on iOS, Android, and macOS-no web views, no JavaScript bridges."

Snap

💡 Valdi's FAQ answers several questions you might have, including how it works and why you might pick Valdi over React Native.

IN BRIEF:

RELEASES:

📖 Articles and Videos

The State of Node.js in 2025, Explained - A thirty-minute talk from JSNation earlier this year where TSC member Matteo Collina presented an update on Node's still-growing popularity, release schedule, security, recent performance enhancements, the permissions system, and more.

GitNation

V8's Garbage Collector Developments in Recent Years - Andy, who's worked on both V8 and JavaScriptCore in the past, reviews the major developments in the V8 engine's garbage collector over the past couple of years. Very technical, but a valuable piece of history.

Andy Wingo

Build Type-Safe APIs for Your JS Apps: Protobuf Workshop with Buf Team - Learn how Protobuf brings type safety across your stack from Node.js APIs to frontend clients. Live Q&A with Buf engineers.

Buf sponsor

Comparing Electron vs. Tauri for Building and Distributing a Desktop App - A team working on an open-source desktop app built using JavaScript and Electron took a look into the Rust-based Tauri instead, with mixed, but mostly positive, results.

Eric Richardson

Using Expo for React Native Development in 2025: A Perspective - Expo has essentially become to React Native what Next.js became to React. But is it well suited for you? Jack weighs the pros and cons.

Jack Rosa

📄 How We Catch UI Bugs Early with Visual Regression Testing - Using Playwright and its visual comparisons feature. Tommaso Ruscica

📺 Learn JavaScript by Building 'Mario' - One of Ania's typically easy to follow, comprehensive tutorials. Ania Kubow

📄 Building a 3D Infinite Carousel with Reactive Background Gradients Clément Grellier

📄 Error Chaining in JS: Cleaner Debugging with Error's cause Matt Smith

🛠 Code & Tools

imgui-react-runtime: React + Dear ImGui + Static Hermes - When the author teased a demo of this on X a few weeks ago, I wasn't sure if it would get released, but here it is. A new way to put together native apps using React and the popular lightweight GUI library Dear ImGui.

Tzvetan Mikov

ESLint Plugin for Baseline JavaScript - The winner of last month's Baseline Tooling Hackathon is an ESLint plugin that flags code that's using features newer than your configured Baseline target (features broadly supported by modern browsers).

Ryuya Hasegawa

Customizable JavaScript Libraries for Forms & Surveys - Create branded, dynamic forms with full control over design, logic, and data storage.

SurveyJS sponsor

pnpm 10.21: Safer Installs and Smarter Runtime Management - Now installs the Node version required by a dependency, declared in its engines.runtime field, meaning CLI apps and postinstall scripts will run with the specified version. The trustPolicy setting also adds protection against supply-chain attacks by failing to install a package if its trust level drops.

Zoltan Kochan

Ink 6.5: Build Interactive CLI Apps using React - A very widely used terminal-based React renderer for building reactive terminal apps using components. v6.5 is notable for adding an incremental rendering option.

Vadim Demedes

📰 Classifieds

Add lightning-fast, on-device 1D/2D code scanning to your web app with STRICH. Easy integration, simple pricing, free trial and demo!

Still writing tests manually? See why modern engineering teams like Dropbox, Notion and Lattice rely on Meticulous to run E2E UI tests.

Launch Your Shopify Storefront in Minutes with Next.js - Open-source starter with Dynamic OG Images, AI Vector Search & Vercel Toolbar.

🎨 Try Pintura image editor for free today, add a polished cropping, rotating, and annotation experience to your web app in minutes.

📢 Elsewhere in the ecosystem

Some other interesting tidbits in the broader landscape:

🎂 P.S. JavaScript Weekly turned fifteen years old this week! Thanks to all of you for reading, and particularly anyone still subscribed from the first issue. We haven't looked at the stats in a while, but we know there are some of you! :-)

14 Nov 2025 12:00am GMT

11 Nov 2025

feedKubernetes Blog

Ingress NGINX Retirement: What You Need to Know

To prioritize the safety and security of the ecosystem, Kubernetes SIG Network and the Security Response Committee are announcing the upcoming retirement of Ingress NGINX. Best-effort maintenance will continue until March 2026. Afterward, there will be no further releases, no bugfixes, and no updates to resolve any security vulnerabilities that may be discovered. Existing deployments of Ingress NGINX will continue to function and installation artifacts will remain available.

We recommend migrating to one of the many alternatives. Consider migrating to Gateway API, the modern replacement for Ingress. If you must continue using Ingress, many alternative Ingress controllers are listed in the Kubernetes documentation. Continue reading for further information about the history and current state of Ingress NGINX, as well as next steps.

About Ingress NGINX

Ingress is the original user-friendly way to direct network traffic to workloads running on Kubernetes. (Gateway API is a newer way to achieve many of the same goals.) In order for an Ingress to work in your cluster, there must be an Ingress controller running. There are many Ingress controller choices available, which serve the needs of different users and use cases. Some are cloud-provider specific, while others have more general applicability.

Ingress NGINX was an Ingress controller, developed early in the history of the Kubernetes project as an example implementation of the API. It became very popular due to its tremendous flexibility, breadth of features, and independence from any particular cloud or infrastructure provider. Since those days, many other Ingress controllers have been created within the Kubernetes project by community groups, and by cloud native vendors. Ingress NGINX has continued to be one of the most popular, deployed as part of many hosted Kubernetes platforms and within innumerable independent users' clusters.

History and Challenges

The breadth and flexibility of Ingress NGINX has caused maintenance challenges. Changing expectations about cloud native software have also added complications. What were once considered helpful options have sometimes come to be considered serious security flaws, such as the ability to add arbitrary NGINX configuration directives via the "snippets" annotations. Yesterday's flexibility has become today's insurmountable technical debt.

Despite the project's popularity among users, Ingress NGINX has always struggled with insufficient or barely-sufficient maintainership. For years, the project has had only one or two people doing development work, on their own time, after work hours and on weekends. Last year, the Ingress NGINX maintainers announced their plans to wind down Ingress NGINX and develop a replacement controller together with the Gateway API community. Unfortunately, even that announcement failed to generate additional interest in helping maintain Ingress NGINX or develop InGate to replace it. (InGate development never progressed far enough to create a mature replacement; it will also be retired.)

Current State and Next Steps

Currently, Ingress NGINX is receiving best-effort maintenance. SIG Network and the Security Response Committee have exhausted our efforts to find additional support to make Ingress NGINX sustainable. To prioritize user safety, we must retire the project.

In March 2026, Ingress NGINX maintenance will be halted, and the project will be retired. After that time, there will be no further releases, no bugfixes, and no updates to resolve any security vulnerabilities that may be discovered. The GitHub repositories will be made read-only and left available for reference.

Existing deployments of Ingress NGINX will not be broken. Existing project artifacts such as Helm charts and container images will remain available.

In most cases, you can check whether you use Ingress NGINX by running kubectl get pods \--all-namespaces \--selector app.kubernetes.io/name=ingress-nginx with cluster administrator permissions.

We would like to thank the Ingress NGINX maintainers for their work in creating and maintaining this project-their dedication remains impressive. This Ingress controller has powered billions of requests in datacenters and homelabs all around the world. In a lot of ways, Kubernetes wouldn't be where it is without Ingress NGINX, and we are grateful for so many years of incredible effort.

SIG Network and the Security Response Committee recommend that all Ingress NGINX users begin migration to Gateway API or another Ingress controller immediately. Many options are listed in the Kubernetes documentation: Gateway API, Ingress. Additional options may be available from vendors you work with.

11 Nov 2025 6:30pm GMT

09 Nov 2025

feedKubernetes Blog

Announcing the 2025 Steering Committee Election Results

The 2025 Steering Committee Election is now complete. The Kubernetes Steering Committee consists of 7 seats, 4 of which were up for election in 2025. Incoming committee members serve a term of 2 years, and all members are elected by the Kubernetes Community.

The Steering Committee oversees the governance of the entire Kubernetes project. With that great power comes great responsibility. You can learn more about the steering committee's role in their charter.

Thank you to everyone who voted in the election; your participation helps support the community's continued health and success.

Results

Congratulations to the elected committee members whose two year terms begin immediately (listed in alphabetical order by GitHub handle):

They join continuing members:

Maciej Szulik and Paco Xu are returning Steering Committee Members.

Big thanks!

Thank you and congratulations on a successful election to this round's election officers:

Thanks to the Emeritus Steering Committee Members. Your service is appreciated by the community:

And thank you to all the candidates who came forward to run for election.

Get involved with the Steering Committee

This governing body, like all of Kubernetes, is open to all. You can follow along with Steering Committee meeting notes and weigh in by filing an issue or creating a PR against their repo. They have an open meeting on the first Wednesday at 8am PT of every month. They can also be contacted at their public mailing list steering@kubernetes.io.

You can see what the Steering Committee meetings are all about by watching past meetings on the YouTube Playlist.


This post was adapted from one written by the Contributor Comms Subproject. If you want to write stories about the Kubernetes community, learn more about us.

This article was revised in November 2025 to update the information about when the steering committee meets.

09 Nov 2025 8:10pm GMT

07 Nov 2025

feedJavaScript Weekly

How JavaScript source maps actually work

#​760 - November 7, 2025

Read on the Web

JavaScript Weekly

The Inner Workings of JavaScript Source Maps - Ever wondered how devtools can magically turn mangled, minified JavaScript back into readable source while debugging? Zero magic; that's a source map doing its job. But how do source maps actually work under the hood?

Manoj Vivek

Ship Secure MCP Auth Without Relying on API Keys - API keys are hard to scope and break user flows. WorkOS Connect delivers a fully compliant OAuth 2.1 flow. It handles PKCE, scopes, user consent, and secure token issuance out of the box.

WorkOS sponsor

Anders Hejlsberg's Take on the Rise of TypeScript - The co-creator of TypeScript says he's 'floored' by the language's success (now the number one language on GitHub in 2025), shares a little info on the on-going compiler rewrite in Go, and the increasing role of AI.

The GitHub Blog

Embedding TypeScript with Hako - A technical look at the Hako JavaScript engine. It runs in WebAssembly so can be more easily embedded in more environments, including mobile apps.

Andrew Sampson

IN BRIEF:

RELEASES:

📖 Articles and Videos

The Talk Videos from CascadiaJS 2025 - CascadiaJS took place a month ago and the talk videos have been gradually rolling out onto YouTube. You can learn more about TanStack with Jack Herrington, the origin story of JavaScript with Annie Sexton, the Web Monetization API with Ioana Chiorean, and more.

CascadiaJS

High-Performance Syntax Highlighting with the CSS Custom Highlight API - Now supported in all major browsers, the CSS Custom Highlight API provides a mechanism for styling arbitrary text ranges in a document by using JavaScript to create the ranges, and CSS to style them.

Pavitra Golchha

How to Create a Virtual Green Screen Using the Vonage Video API - Transform video calls with virtual green screens using the Vonage Video API and HTML5 canvas.

Vonage sponsor

How to Throttle Specific Requests in Chrome DevTools - Chrome DevTools has supported network throttling for a long time but you can now throttle requests to specific URLs or domains too, which could be ideal if you want to see how your site handles the failure of third party scripts.

Matt Zeunert

?! Importing Node Modules from BitTorrent - A fascinating demo of the power of Node.js's customization hooks for overriding import behavior.

Evan Hahn

Advanced Beginner's Guide to ClojureScript - An introduction to a compiler for the functional Clojure Lisp dialect that produces JavaScript.

Roman Liutikov

📄 Handling Time and Mock Clocks in Tests Andrew Scott (Angular)

📄 Zod + TypeScript: Schema Validation Made Easy Hassan Djirdeh

📄 Next.js 16: What's New and What It Means for Frontend Devs Abiola Farounbi (LogRocket)

🛠 Code & Tools

Perspective 4.0: High Performance Analytics and Data Visualization Component - Originally built by JP Morgan, this data visualization component, built in C++ and compiled to WebAssembly, is well-suited for large and real-time streaming datasets. The demo on the homepage lets you try visualization types at up to 1000 changes per second. v4.0 sees the project move to the OpenJS Foundation.

OpenJS Foundation

💡 Perspective comes with a rich set of examples with full code demonstrating how to use it, like this streaming example.

Agentic Postgres: Let Your Agents Cook - Build AI apps faster: Postgres with built-in memory, search, and free forkable DBs. Try it free on Tiger.

Tiger Data sponsor

Vue Data UI 3.6: Vue Components Library for Data Storytelling - There's a lot packed into this suite of components, including basic chart types through to donuts, sparklines, world views, stacks, heatmaps, word clouds, and more. Definitely worth a look if you're using Vue. Live examples.

Alec Lloyd Probert

🖼️ image-dimensions: Get the Dimensions of Images - A zero-dependency way to get the pixel width and height of JPEG, PNG/APNG, GIF, WebP, AVIF and HEIF images in any modern JavaScript environment.

Sindre Sorhus

React Syntax Highlighter: A Code Syntax Highlighting Component - If you need to show off source code in your React app somewhere, this is a component that does the job. GitHub repo.

Conor Hastings

CSSOM: A CSS Parser Written in Pure JavaScript - Also a partial implementation of CSS Object Model.

Nikita Vasilyev

📰 Classifieds

Still writing tests manually? See why modern engineering teams like Dropbox, Notion and Wiz rely on Meticulous to run E2E UI tests.

🔎 Search your GitHub Actions logs instantly. No more endless scrolling through CI failures. Try Depot's new log search and find errors in seconds.

📢 Elsewhere in the ecosystem

A roundup of some other interesting stories in the broader landscape:

07 Nov 2025 12:00am GMT

06 Nov 2025

feedKubernetes Blog

Gateway API 1.4: New Features

Gateway API logo

Ready to rock your Kubernetes networking? The Kubernetes SIG Network community presented the General Availability (GA) release of Gateway API (v1.4.0)! Released on October 6, 2025, version 1.4.0 reinforces the path for modern, expressive, and extensible service networking in Kubernetes.

Gateway API v1.4.0 brings three new features to the Standard channel (Gateway API's GA release channel):

and introduces three new experimental features:

Graduations to Standard Channel

Backend TLS policy

Leads: Candace Holman, Norwin Schnyder, Katarzyna Łach

GEP-1897: BackendTLSPolicy

BackendTLSPolicy is a new Gateway API type for specifying the TLS configuration of the connection from the Gateway to backend pod(s). . Prior to the introduction of BackendTLSPolicy, there was no API specification that allowed encrypted traffic on the hop from Gateway to backend.

The BackendTLSPolicy validation configuration requires a hostname. This hostname serves two purposes. It is used as the SNI header when connecting to the backend and for authentication, the certificate presented by the backend must match this hostname, unless subjectAltNames is explicitly specified.

If subjectAltNames (SANs) are specified, the hostname is only used for SNI, and authentication is performed against the SANs instead. If you still need to authenticate against the hostname value in this case, you MUST add it to the subjectAltNames list.

BackendTLSPolicy validation configuration also requires either caCertificateRefs or wellKnownCACertificates. caCertificateRefs refer to one or more (up to 8) PEM-encoded TLS certificate bundles. If there are no specific certificates to use, then depending on your implementation, you may use wellKnownCACertificates, set to "System" to tell the Gateway to use an implementation-specific set of trusted CA Certificates.

In this example, the BackendTLSPolicy is configured to use certificates defined in the auth-cert ConfigMap to connect with a TLS-encrypted upstream connection where pods backing the auth service are expected to serve a valid certificate for auth.example.com. It uses subjectAltNames with a Hostname type, but you may also use a URI type.

apiVersion: gateway.networking.k8s.io/v1
kind: BackendTLSPolicy
metadata:
 name: tls-upstream-auth
spec:
 targetRefs:
 - kind: Service
 name: auth
 group: ""
 sectionName: "https"
 validation:
 caCertificateRefs:
 - group: "" # core API group
 kind: ConfigMap
 name: auth-cert
 subjectAltNames:
 - type: "Hostname"
 hostname: "auth.example.com"

In this example, the BackendTLSPolicy is configured to use system certificates to connect with a TLS-encrypted backend connection where Pods backing the dev Service are expected to serve a valid certificate for dev.example.com.

apiVersion: gateway.networking.k8s.io/v1
kind: BackendTLSPolicy
metadata:
 name: tls-upstream-dev
spec:
 targetRefs:
 - kind: Service
 name: dev
 group: ""
 sectionName: "btls"
 validation:
 wellKnownCACertificates: "System"
 hostname: dev.example.com

More information on the configuration of TLS in Gateway API can be found in Gateway API - TLS Configuration.

Status information about the features that an implementation supports

Leads: Lior Lieberman, Beka Modebadze

GEP-2162: Supported features in GatewayClass Status

GatewayClass status has a new field, supportedFeatures. This addition allows implementations to declare the set of features they support. This provides a clear way for users and tools to understand the capabilities of a given GatewayClass.

This feature's name for conformance tests (and GatewayClass status reporting) is SupportedFeatures. Implementations must populate the supportedFeatures field in the .status of the GatewayClass before the GatewayClass is accepted, or in the same operation.

Here's an example of a supportedFeatures published under GatewayClass' .status:

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
...
status:
 conditions:
 - lastTransitionTime: "2022-11-16T10:33:06Z"
 message: Handled by Foo controller
 observedGeneration: 1
 reason: Accepted
 status: "True"
 type: Accepted
 supportedFeatures:
 - HTTPRoute
 - HTTPRouteHostRewrite
 - HTTPRoutePortRedirect
 - HTTPRouteQueryParamMatching

Graduation of SupportedFeatures to Standard, helped improve the conformance testing process for Gateway API. The conformance test suite will now automatically run tests based on the features populated in the GatewayClass' status. This creates a strong, verifiable link between an implementation's declared capabilities and the test results, making it easier for implementers to run the correct conformance tests and for users to trust the conformance reports.

This means when the SupportedFeatures field is populated in the GatewayClass status there will be no need for additional conformance tests flags like -suported-features, or -exempt or -all-features. It's important to note that Mesh features are an exception to this and can be tested for conformance by using Conformance Profiles, or by manually providing any combination of features related flags until the dedicated resource graduates from the experimental channel.

Named rules for Routes

GEP-995: Adding a new name field to all xRouteRule types (HTTPRouteRule, GRPCRouteRule, etc.)

Leads: Guilherme Cassolato

This enhancement enables route rules to be explicitly identified and referenced across the Gateway API ecosystem. Some of the key use cases include:

This follows the same well-established pattern already adopted for Gateway listeners, Service ports, Pods (and containers), and many other Kubernetes resources.

While the new name field is optional (so existing resources remain valid), its use is strongly encouraged. Implementations are not expected to assign a default value, but they may enforce constraints such as immutability.

Finally, keep in mind that the name format is validated, and other fields (such as sectionName) may impose additional, indirect constraints.

Experimental channel changes

Enabling external Auth for HTTPRoute

Giving Gateway API the ability to enforce authentication and maybe authorization as well at the Gateway or HTTPRoute level has been a highly requested feature for a long time. (See the GEP-1494 issue for some background.)

This Gateway API release adds an Experimental filter in HTTPRoute that tells the Gateway API implementation to call out to an external service to authenticate (and, optionally, authorize) requests.

This filter is based on the Envoy ext_authz API, and allows talking to an Auth service that uses either gRPC or HTTP for its protocol.

Both methods allow the configuration of what headers to forward to the Auth service, with the HTTP protocol allowing some extra information like a prefix path.

A HTTP example might look like this (noting that this example requires the Experimental channel to be installed and an implementation that supports External Auth to actually understand the config):

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: require-auth
 namespace: default
spec:
 parentRefs:
 - name: your-gateway-here
 rules:
 - matches:
 - path:
 type: Prefix
 value: /admin
 filters:
 - type: ExternalAuth
 externalAuth:
 protocol: HTTP
 backendRef:
 name: auth-service
 http:
 # These headers are always sent for the HTTP protocol,
 # but are included here for illustrative purposes
 allowedHeaders:
 - Host
 - Method
 - Path
 - Content-Length
 - Authorization
 backendRefs:
 - name: admin-backend
 port: 8080

This allows the backend Auth service to use the supplied headers to make a determination about the authentication for the request.

When a request is allowed, the external Auth service will respond with a 200 HTTP response code, and optionally extra headers to be included in the request that is forwarded to the backend. When the request is denied, the Auth service will respond with a 403 HTTP response.

Since the Authorization header is used in many authentication methods, this method can be used to do Basic, Oauth, JWT, and other common authentication and authorization methods.

Mesh resource

Lead(s): Flynn

GEP-3949: Mesh-wide configuration and supported features

Gateway API v1.4.0 introduces a new experimental Mesh resource, which provides a way to configure mesh-wide settings and discover the features supported by a given mesh implementation. This resource is analogous to the Gateway resource and will initially be mainly used for conformance testing, with plans to extend its use to off-cluster Gateways in the future.

The Mesh resource is cluster-scoped and, as an experimental feature, is named XMesh and resides in the gateway.networking.x-k8s.io API group. A key field is controllerName, which specifies the mesh implementation responsible for the resource. The resource's status stanza indicates whether the mesh implementation has accepted it and lists the features the mesh supports.

One of the goals of this GEP is to avoid making it more difficult for users to adopt a mesh. To simplify adoption, mesh implementations are expected to create a default Mesh resource upon startup if one with a matching controllerName doesn't already exist. This avoids the need for manual creation of the resource to begin using a mesh.

The new XMesh API kind, within the gateway.networking.x-k8s.io/v1alpha1 API group, provides a central point for mesh configuration and feature discovery (source).

A minimal XMesh object specifies the controllerName:

apiVersion: gateway.networking.x-k8s.io/v1alpha1
kind: XMesh
metadata:
 name: one-mesh-to-mesh-them-all
spec:
 controllerName: one-mesh.example.com/one-mesh

The mesh implementation populates the status field to confirm it has accepted the resource and to list its supported features ( source):

status:
 conditions:
 - type: Accepted
 status: "True"
 reason: Accepted
 supportedFeatures:
 - name: MeshHTTPRoute
 - name: OffClusterGateway

Introducing default Gateways

Lead(s): Flynn

GEP-3793: Allowing Gateways to program some routes by default.

For application developers, one common piece of feedback has been the need to explicitly name a parent Gateway for every single north-south Route. While this explicitness prevents ambiguity, it adds friction, especially for developers who just want to expose their application to the outside world without worrying about the underlying infrastructure's naming scheme. To address this, we have introduce the concept of Default Gateways.

For application developers: Just "use the default"

As an application developer, you often don't care about the specific Gateway your traffic flows through, you just want it to work. With this enhancement, you can now create a Route and simply ask it to use a default Gateway.

This is done by setting the new useDefaultGateways field in your Route's spec.

Here's a simple HTTPRoute that uses a default Gateway:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: my-route
spec:
 useDefaultGateways: All
 rules:
 - backendRefs:
 - name: my-service
 port: 80

That's it! No more need to hunt down the correct Gateway name for your environment. Your Route is now a "defaulted Route."

For cluster operators: You're still in control

This feature doesn't take control away from cluster operators ("Chihiro"). In fact, they have explicit control over which Gateways can act as a default. A Gateway will only accept these defaulted Routes if it is configured to do so.

You can also use a ValidatingAdmissionPolicy to either require or even forbid for Routes to rely on a default Gateway.

As a cluster operator, you can designate a Gateway as a default by setting the (new) .spec.defaultScope field:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
 name: my-default-gateway
 namespace: default
spec:
 defaultScope: All
 # ... other gateway configuration

Operators can choose to have no default Gateways, or even multiple.

How it works and key details

Default Gateways represent a significant step forward in making the Gateway API simpler and more intuitive for everyday use cases, bridging the gap between the flexibility needed by operators and the simplicity desired by developers.

Configuring client certificate validation

Lead(s): Arko Dasgupta, Katarzyna Łach

GEP-91: Address connection coalescing security issue

This release brings updates for configuring client certificate validation, addressing a critical security vulnerability related to connection reuse. HTTP connection coalescing is a web performance optimization that allows a client to reuse an existing TLS connection for requests to different domains. While this reduces the overhead of establishing new connections, it introduces a security risk in the context of API gateways. The ability to reuse a single TLS connection across multiple Listeners brings the need to introduce shared client certificate configuration in order to avoid unauthorized access.

Why SNI-based mTLS is not the answer

One might think that using Server Name Indication (SNI) to differentiate between Listeners would solve this problem. However, TLS SNI is not a reliable mechanism for enforcing security policies in a connection coalescing scenario. A client could use a single TLS connection for multiple peer connections, as long as they are all covered by the same certificate. This means that a client could establish a connection by indicating one peer identity (using SNI), and then reuse that connection to access a different virtual host that is listening on the same IP address and port. That reuse, which is controlled by client side heuristics, could bypass mutual TLS policies that were specific to the second listener configuration.

Here's an example to help explain it:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
 name: wildcard-tls-gateway
spec:
 gatewayClassName: example
 listeners:
 - name: foo-https
 protocol: HTTPS
 port: 443
 hostname: foo.example.com
 tls:
 certificateRefs:
 - group: "" # core API group
 kind: Secret
 name: foo-example-com-cert # SAN: foo.example.com
 - name: wildcard-https
 protocol: HTTPS
 port: 443
 hostname: "*.example.com"
 tls:
 certificateRefs:
 - group: "" # core API group
 kind: Secret
 name: wildcard-example-com-cert # SAN: *.example.com

I have configured a Gateway with two listeners, both having overlapping hostnames. My intention is for the foo-http listener to be accessible only by clients presenting the foo-example-com-cert certificate. In contrast, the wildcard-https listener should allow access to a broader audience using any certificate valid for the *.example.com domain.

Consider a scenario where a client initially connects to foo.example.com. The server requests and successfully validates the foo-example-com-cert certificate, establishing the connection. Subsequently, the same client wishes to access other sites within this domain, such as bar.example.com, which is handled by the wildcard-https listener. Due to connection reuse, clients can access wildcard-https backends without an additional TLS handshake on the existing connection. This process functions as expected.

However, a critical security vulnerability arises when the order of access is reversed. If a client first connects to bar.example.com and presents a valid bar.example.com certificate, the connection is successfully established. If this client then attempts to access foo.example.com, the existing connection's client certificate will not be re-validated. This allows the client to bypass the specific certificate requirement for the foo backend, leading to a serious security breach.

The solution: per-port TLS configuration

The updated Gateway API gains a tls field in the .spec of a Gateway, that allows you to define a default client certificate validation configuration for all Listeners, and then if needed override it on a per-port basis. This provides a flexible and powerful way to manage your TLS policies.

Here's a look at the updated API definitions (shown as Go source code):

// GatewaySpec defines the desired state of Gateway.
type GatewaySpec struct {
 ...
 // GatewayTLSConfig specifies frontend tls configuration for gateway.
 TLS *GatewayTLSConfig `json:"tls,omitempty"`
}

// GatewayTLSConfig specifies frontend tls configuration for gateway.
type GatewayTLSConfig struct {
 // Default specifies the default client certificate validation configuration
 Default TLSConfig `json:"default"`

 // PerPort specifies tls configuration assigned per port.
 PerPort []TLSPortConfig `json:"perPort,omitempty"`
}

// TLSPortConfig describes a TLS configuration for a specific port.
type TLSPortConfig struct {
 // The Port indicates the Port Number to which the TLS configuration will be applied.
 Port PortNumber `json:"port"`

 // TLS store the configuration that will be applied to all Listeners handling
 // HTTPS traffic and matching given port.
 TLS TLSConfig `json:"tls"`
}

Breaking changes

Standard GRPCRoute - .spec field required (technicality)

The promotion of GRPCRoute to Standard introduces a minor but technically breaking change regarding the presence of the top-level .spec field. As part of achieving Standard status, the Gateway API has tightened the OpenAPI schema validation within the GRPCRoute CustomResourceDefinition (CRD) to explicitly ensure the spec field is required for all GRPCRoute resources. This change enforces stricter conformance to Kubernetes object standards and enhances the resource's stability and predictability. While it is highly unlikely that users were attempting to define a GRPCRoute without any specification, any existing automation or manifests that might have relied on a relaxed interpretation allowing a completely absent spec field will now fail validation and must be updated to include the .spec field, even if empty.

Experimental CORS support in HTTPRoute - breaking change for allowCredentials field

The Gateway API subproject has introduced a breaking change to the Experimental CORS support in HTTPRoute, concerning the allowCredentials field within the CORS policy. This field's definition has been strictly aligned with the upstream CORS specification, which dictates that the corresponding Access-Control-Allow-Credentials header must represent a Boolean value. Previously, the implementation might have been overly permissive, potentially accepting non-standard or string representations such as true due to relaxed schema validation. Users who were configuring CORS rules must now review their manifests and ensure the value for allowCredentials strictly conforms to the new, more restrictive schema. Any existing HTTPRoute definitions that do not adhere to this stricter validation will now be rejected by the API server, requiring a configuration update to maintain functionality.

Improving the development and usage experience

As part of this release, we have improved some of the developer experience workflow:

Additionally, as part of the effort to improve Gateway API usage experience, some efforts were made to remove some ambiguities and some old tech-debts from our documentation website:

Try it out

Unlike other Kubernetes APIs, you don't need to upgrade to the latest version of Kubernetes to get the latest version of Gateway API. As long as you're running Kubernetes 1.26 or later, you'll be able to get up and running with this version of Gateway API.

To try out the API, follow the Getting Started Guide.

As of this writing, seven implementations are already conformant with Gateway API v1.4.0. In alphabetical order:

Get involved

Wondering when a feature will be added? There are lots of opportunities to get involved and help define the future of Kubernetes routing APIs for both ingress and service mesh.

The maintainers would like to thank everyone who's contributed to Gateway API, whether in the form of commits to the repo, discussion, ideas, or general support. We could never have made this kind of progress without the support of this dedicated and active community.

Related Kubernetes blog articles

06 Nov 2025 5:00pm GMT