# browsers

Published articles for browsers.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How WebRTC Scales: Signaling, NAT Traversal, and the Mesh/SFU/MCU Tradeoff

DevFeed: [How WebRTC Scales: Signaling, NAT Traversal, and the Mesh/SFU/MCU Tradeoff](<https://devfeed.tech/articles/how-webrtc-scales-signaling-nat-traversal-and-the-mesh-sfu-mcu-tradeoff-26901.md>)

Original publisher: [Read original article](<https://www.freecodecamp.org/news/how-webrtc-scales-signaling-nat-traversal-and-the-mesh-sfu-mcu-tradeoff/>)

Author: Karan Pratap Singh

Published: 2026-09-15T15:57:39Z

Content type: article

Language: en

Sources: [freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More](<https://devfeed.tech/sources/freecodecamp-programming-tutorials-python-javascript-git-more.md>)

Topics: [WebRTC](<https://devfeed.tech/topics/webrtc.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [API](<https://devfeed.tech/topics/api.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>), [Firewall](<https://devfeed.tech/topics/firewall.md>), [Network](<https://devfeed.tech/topics/network.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [decoding](<https://devfeed.tech/tags/decoding.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [http](<https://devfeed.tech/tags/http.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [network](<https://devfeed.tech/tags/network.md>), [networking](<https://devfeed.tech/tags/networking.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [server](<https://devfeed.tech/tags/server.md>), [webrtc](<https://devfeed.tech/tags/webrtc.md>)

### AI overview

This article explains how WebRTC enables browsers to exchange audio, video, and data directly. It covers the three WebRTC APIs, signaling through WebSockets or HTTP, NAT traversal using ICE, STUN, and TURN, and the mesh, SFU, and MCU approaches to scaling media delivery.

### Source excerpt

Web Real-Time Communication (or WebRTC) is the open standard browsers use to send audio, video, and data straight to each other. There's no plugin or native app, nothing beyond an API that every brows

## ESP32 Bit Pirate: Bridging Modern Microcontrollers and Browser-Based Hardware Debugging

DevFeed: [ESP32 Bit Pirate: Bridging Modern Microcontrollers and Browser-Based Hardware Debugging](<https://devfeed.tech/articles/esp32-bit-pirate-bridging-modern-microcontrollers-and-browser-based-hardware-debugging-17393.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/esp32-bitpirate-web/>)

Author: Olimpiu Pop

Published: 2026-09-14T06:06:00Z

Content type: news

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [ESP32](<https://devfeed.tech/topics/esp32.md>), [HTML5](<https://devfeed.tech/topics/html5.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [development](<https://devfeed.tech/tags/development.md>), [development-tools](<https://devfeed.tech/tags/development-tools.md>), [embedded-devices](<https://devfeed.tech/tags/embedded-devices.md>), [embedded-software-dev](<https://devfeed.tech/tags/embedded-software-dev.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-bitpirate-web](<https://devfeed.tech/tags/esp32-bitpirate-web.md>), [html5](<https://devfeed.tech/tags/html5.md>), [microcontrollers](<https://devfeed.tech/tags/microcontrollers.md>), [news](<https://devfeed.tech/tags/news.md>)

### AI overview

ESP32 Bit Pirate is a browser-based, multi-protocol debugging platform for ESP32-S3 boards. It uses HTML5 APIs such as Web Serial and WebUSB for firmware flashing, terminal access, documentation, and hardware analysis without requiring local development tools.

### Source excerpt

ESP32 Bit Pirate project integrates multi-protocol debugging within a browser environment using HTML5 APIs. It enables users to install firmware and interact with microcontrollers like the ESP32-S3 directly from the browser. The platform supports various digital and wireless protocols while providing hands-on guidance through practical recipes for tasks such as memory dumping and signal analysis. By Olimpiu Pop

## A countdown that stays accurate in a background tab

DevFeed: [A countdown that stays accurate in a background tab](<https://devfeed.tech/articles/a-countdown-that-stays-accurate-in-a-background-tab-9019.md>)

Original publisher: [Read original article](<https://markodenic.tech/a-countdown-that-stays-accurate-in-a-background-tab/>)

Author: Marko

Published: 2026-09-05T06:30:19Z

Content type: tutorial

Language: en

Sources: [Marko Denic Tech](<https://devfeed.tech/sources/marko-denic-tech.md>)

Topics: [web applications](<https://devfeed.tech/topics/web-applications.md>), [client](<https://devfeed.tech/topics/client.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [blog-for-developers](<https://devfeed.tech/tags/blog-for-developers.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [bug](<https://devfeed.tech/tags/bug.md>), [build-faster](<https://devfeed.tech/tags/build-faster.md>), [code-productivity](<https://devfeed.tech/tags/code-productivity.md>), [code-smarter](<https://devfeed.tech/tags/code-smarter.md>), [content-monetization](<https://devfeed.tech/tags/content-monetization.md>), [css-animation](<https://devfeed.tech/tags/css-animation.md>), [css-performance](<https://devfeed.tech/tags/css-performance.md>), [developer-growth](<https://devfeed.tech/tags/developer-growth.md>), [developer-resources](<https://devfeed.tech/tags/developer-resources.md>), [email-newsletter-for-coders](<https://devfeed.tech/tags/email-newsletter-for-coders.md>), [front-end-development](<https://devfeed.tech/tags/front-end-development.md>), [github-profile-automation](<https://devfeed.tech/tags/github-profile-automation.md>), [html](<https://devfeed.tech/tags/html.md>), [html-tips](<https://devfeed.tech/tags/html-tips.md>), [http](<https://devfeed.tech/tags/http.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [javascript-tricks](<https://devfeed.tech/tags/javascript-tricks.md>), [learn-to-code](<https://devfeed.tech/tags/learn-to-code.md>), [responsive-design-tips](<https://devfeed.tech/tags/responsive-design-tips.md>), [server](<https://devfeed.tech/tags/server.md>), [ui](<https://devfeed.tech/tags/ui.md>), [web-dev-newsletter](<https://devfeed.tech/tags/web-dev-newsletter.md>), [web-development](<https://devfeed.tech/tags/web-development.md>), [web-development-tips](<https://devfeed.tech/tags/web-development-tips.md>), [weekly-dev-tips](<https://devfeed.tech/tags/weekly-dev-tips.md>), [workflow-optimization](<https://devfeed.tech/tags/workflow-optimization.md>)

### AI overview

A tutorial on building accurate web countdowns despite background-tab timer throttling. It recommends calculating remaining time from an absolute deadline, forcing a render when a tab returns, and treating the server clock as the authority for consequential expirations.

### Source excerpt

Your checkout timer says 4:55 when the cart already expired. Why background tabs break setInterval countdowns, and the three-line fix.

## Calling for Interop 2027 proposals

DevFeed: [Calling for Interop 2027 proposals](<https://devfeed.tech/articles/calling-for-interop-2027-proposals-4253.md>)

Original publisher: [Read original article](<https://blogs.windows.com/msedgedev/2026/09/03/calling-for-interop-2027-proposals/>)

Author: Patrick Brosset

Published: 2026-09-03T16:09:17Z

Content type: article

Language: en

Sources: [Microsoft Edge Blog](<https://devfeed.tech/sources/microsoft-edge-blog.md>)

Topics: [Interop2027](<https://devfeed.tech/topics/interop2027.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [developer](<https://devfeed.tech/tags/developer.md>), [interop](<https://devfeed.tech/tags/interop.md>), [interop2027](<https://devfeed.tech/tags/interop2027.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>)

### AI overview

The article opens the proposal process for Interop 2027, inviting submissions that address inconsistent implementation of standards-based web-platform features across browsers.

### Source excerpt

The Interop 2027 call for proposals is open, submit your ideas now! Over the past six years, the I The post Calling for Interop 2027 proposals appeared first on Microsoft Edge Blog.

## Orchestrating Playwright test suites with Temporal for independent retries

DevFeed: [Orchestrating Playwright test suites with Temporal for independent retries](<https://devfeed.tech/articles/stop-restarting-your-tests-35993.md>)

Original publisher: [Read original article](<https://temporal.io/blog/stop-restarting-your-tests>)

Author: Simon Emms

Published: 2026-09-03T00:00:00Z

Content type: article

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [ci](<https://devfeed.tech/topics/ci.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [ci](<https://devfeed.tech/tags/ci.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [retry](<https://devfeed.tech/tags/retry.md>), [temporal-voices](<https://devfeed.tech/tags/temporal-voices.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This article explores using Temporal to orchestrate Playwright end-to-end test suites as independent, durable units of work. The approach allows failed tests to retry independently while preserving progress instead of restarting the entire CI job.

### Source excerpt

Learn how Temporal can orchestrate end-to-end test suites so failed tests retry independently, preserving progress without restarting the entire CI job.

## Perceptual Issues in Dynamic Interfaces

DevFeed: [Perceptual Issues in Dynamic Interfaces](<https://devfeed.tech/articles/perceptual-issues-in-dynamic-interfaces-9064.md>)

Original publisher: [Read original article](<https://ixdf.org/literature/article/perceptual-issues-in-dynamic-interfaces>)

Author: William Hudson

Published: 2026-09-02T00:00:00Z

Content type: article

Language: en

Sources: [UX Daily - User Experience Daily](<https://devfeed.tech/sources/ux-daily-user-experience-daily.md>)

Topics: [Ajax](<https://devfeed.tech/topics/ajax.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>)

Tags: [applications](<https://devfeed.tech/tags/applications.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [interface-design](<https://devfeed.tech/tags/interface-design.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [technology](<https://devfeed.tech/tags/technology.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [web](<https://devfeed.tech/tags/web.md>), [web-design](<https://devfeed.tech/tags/web-design.md>)

### AI overview

This video explains how inattentional blindness and change blindness affect users' ability to perceive updates in dynamic web interfaces. It uses examples including the invisible gorilla experiment and page reloads to show why important changes can go unnoticed, with implications for interface and web design.

### Source excerpt

In this video, William Hudson, User Experience Strategist and Founder of Syntagm Ltd, explores the psychological phenomena that affect how users perceive changes in dynamic web interfaces. While the focus is on web pages, these principles apply to any interactive technology, from desktop applications to mobile interfaces.[[video:2250]]Understanding Human PerceptionWhen we add dynamic functionality to web pages using technologies like Ajax, we gain tremendous flexibility to update content without full-page reloads. However, this increased interactivity introduces a crucial challenge: users may not notice the changes we make. Three key perceptual phenomena explain why even obvious updates can...

## Let's Use the Emergent CSS random() Function in all the Browsers

DevFeed: [Let's Use the Emergent CSS random() Function in all the Browsers](<https://devfeed.tech/articles/let-s-use-the-emergent-css-random-function-in-all-the-browsers-4260.md>)

Original publisher: [Read original article](<https://css-tricks.com/css-random-function-polyfill/>)

Author: Lee Meyer

Published: 2026-08-31T15:12:19Z

Content type: article

Language: en

Sources: [CSS-Tricks](<https://devfeed.tech/sources/css-tricks.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [browser](<https://devfeed.tech/topics/browser.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [articles](<https://devfeed.tech/tags/articles.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [css](<https://devfeed.tech/tags/css.md>), [css-functions](<https://devfeed.tech/tags/css-functions.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [polyfill](<https://devfeed.tech/tags/polyfill.md>), [random](<https://devfeed.tech/tags/random.md>), [resource](<https://devfeed.tech/tags/resource.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

This article explores the emerging CSS random() function and the effort to create a polyfill that works across browsers. It discusses controlled randomness in web layouts and UX, including a custom JavaScript confetti implementation, and considers how CSS could reduce the need for JavaScript or third-party frameworks.

### Source excerpt

The journey to create a polyfill for the upcoming CSS random() function that works in all browsers. Let's Use the Emergent CSS random() Function in all the Browsers originally handwritten and published with love on CSS-Tricks. You should really get the newsletter as well.

## Forever a Student

DevFeed: [Forever a Student](<https://devfeed.tech/articles/forever-a-student-35582.md>)

Original publisher: [Read original article](<https://snook.ca/everything/forever-a-student/>)

Published: 2026-08-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Jonathan Snook](<https://devfeed.tech/sources/jonathan-snook.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [CSS](<https://devfeed.tech/topics/css.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [css](<https://devfeed.tech/tags/css.md>), [development](<https://devfeed.tech/tags/development.md>), [learning](<https://devfeed.tech/tags/learning.md>), [testing](<https://devfeed.tech/tags/testing.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The author reflects on learning web development, sharing work in progress, and accepting that mistakes are part of learning. They describe how writing, prototyping, browser testing, and research help deepen understanding, and argue that people should not be discouraged from sharing what they are learning.

### Source excerpt

When I was learning CSS's grid feature (oh gosh, nearly ten years ago), I posted a few short videos talking about my understanding of the feature and how it worked. I was surprised to get scolded for sharing inaccurate information, "especially as a teacher". Wait, what?! Who, me?! I get things wrong all the time. That's part of learning. But it was the teacher remark that threw me because I've never considered myself a teacher. Yes, I've spoken at conferences and put on workshops but the label of teacher isn't one that I feel comfortable with. Perhaps I associate the word with all-knowing authority figures standing in front of a class and I'm far from all-knowing, or an authority, or have much of a figure. I have stood in front of classes, though. I imagine myself more like Stuart from the Mad TV sketch saying "look what I can do!" When I first got into web development, I built a web page that displayed a table pulled from a database. When I showed my friend, he wasn't all that excited. "Is that it?" It was, after all, just a table on a page. (Which, hey, it was 1996. Everything was just a table on a page.) This blog has been a 25+ year journey of me saying "look what I can do" over and over again. I enjoy the process of learning new things and sharing what I've learned. Writing about what I've learned helps me learn even more because I build prototypes and test in different browsers as I try to understand all the nuances of something in my effort to write about a topic. Even with the research and prototypes and testing and writing, I'll get things wrong but one of the things I have learned is not to admonish people sharing what they're learning, even if they get it wrong. We should all be forever a student. Have something to say? Tell me about it.

## The Infinite Scroll Was a Design Crime. Now Meta is Paying for It.

DevFeed: [The Infinite Scroll Was a Design Crime. Now Meta is Paying for It.](<https://devfeed.tech/articles/the-infinite-scroll-was-a-design-crime-now-meta-is-paying-for-it-9277.md>)

Original publisher: [Read original article](<https://webdesignerdepot.com/the-infinite-scroll-was-a-design-crime-now-meta-is-paying-for-it/>)

Author: Simon Sterne

Published: 2026-08-25T11:30:00Z

Content type: opinion

Language: en

Sources: [Web Designer Depot](<https://devfeed.tech/sources/web-designer-depot.md>)

Topics: [web design](<https://devfeed.tech/topics/web-design.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Web](<https://devfeed.tech/topics/web.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [browser](<https://devfeed.tech/topics/browser.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [CSS](<https://devfeed.tech/topics/css.md>)

Tags: [addictive-design](<https://devfeed.tech/tags/addictive-design.md>), [behavioral-design](<https://devfeed.tech/tags/behavioral-design.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [css](<https://devfeed.tech/tags/css.md>), [dark-patterns](<https://devfeed.tech/tags/dark-patterns.md>), [design](<https://devfeed.tech/tags/design.md>), [design-ethics](<https://devfeed.tech/tags/design-ethics.md>), [digital-detox](<https://devfeed.tech/tags/digital-detox.md>), [digital-wellness](<https://devfeed.tech/tags/digital-wellness.md>), [dopamine-loops](<https://devfeed.tech/tags/dopamine-loops.md>), [ethical-design](<https://devfeed.tech/tags/ethical-design.md>), [front-end-development](<https://devfeed.tech/tags/front-end-development.md>), [infinite-scroll](<https://devfeed.tech/tags/infinite-scroll.md>), [meta](<https://devfeed.tech/tags/meta.md>), [meta-lawsuit](<https://devfeed.tech/tags/meta-lawsuit.md>), [meta-trial](<https://devfeed.tech/tags/meta-trial.md>), [social-media-lawsuit](<https://devfeed.tech/tags/social-media-lawsuit.md>), [software](<https://devfeed.tech/tags/software.md>), [tech](<https://devfeed.tech/tags/tech.md>), [tech-ethics](<https://devfeed.tech/tags/tech-ethics.md>), [tech-industry](<https://devfeed.tech/tags/tech-industry.md>), [tech-news](<https://devfeed.tech/tags/tech-news.md>), [ui-ux](<https://devfeed.tech/tags/ui-ux.md>), [usability](<https://devfeed.tech/tags/usability.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [ux](<https://devfeed.tech/tags/ux.md>), [ux-design](<https://devfeed.tech/tags/ux-design.md>), [ux-usability](<https://devfeed.tech/tags/ux-usability.md>), [web-design](<https://devfeed.tech/tags/web-design.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The article argues that infinite scroll prioritized addictive engagement and advertising over usability, accessibility of stopping cues, and front-end integrity. It discusses legal scrutiny of Meta's Instagram and Facebook feeds, performance and state-management problems, and calls on web professionals to abandon the pattern.

### Source excerpt

The infinite scroll was never a UX feature--it was a slot machine disguised as code. Now, as Meta faces a historic trial over algorithmic addiction, web designers must finally confront the ugly truth: we sacrificed basic usability and human willpower just to keep users trapped in a bottomless pit.

## Intent to Ship: JPEG XL

DevFeed: [Intent to Ship: JPEG XL](<https://devfeed.tech/articles/intent-to-ship-jpeg-xl-4154.md>)

Original publisher: [Read original article](<https://hacks.mozilla.org/2026/08/intent-to-ship-jpeg-xl/>)

Author: Jake Archibald

Published: 2026-08-24T15:32:15Z

Content type: article

Language: en

Sources: [Mozilla Hacks - the Web developer blog](<https://devfeed.tech/sources/mozilla-hacks-the-web-developer-blog.md>)

Topics: [Firefox](<https://devfeed.tech/topics/firefox.md>), [Web](<https://devfeed.tech/topics/web.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Firefox Nightly](<https://devfeed.tech/topics/firefox-nightly.md>), [Google](<https://devfeed.tech/topics/google.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [developer](<https://devfeed.tech/tags/developer.md>), [features](<https://devfeed.tech/tags/features.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [firefox-nightly](<https://devfeed.tech/tags/firefox-nightly.md>), [google](<https://devfeed.tech/tags/google.md>), [hacks](<https://devfeed.tech/tags/hacks.md>), [interop](<https://devfeed.tech/tags/interop.md>), [mozilla](<https://devfeed.tech/tags/mozilla.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Mozilla announces its intent to ship JPEG XL in Firefox, using Google Research's Rust-based jxl-rs decoder to provide secure, performant support. The article highlights progressive rendering and compares JPEG XL with AVIF for different image-compression use cases.

### Source excerpt

It isn't often that new image formats land in browsers. In the early 2000s we had JPEG, GIF, and PNG. The 2010s gave us WebP, which was a modest step up from JPEG. But the 2020s have given us two new image formats that are a big step up from previous formats: AVIF and JPEG [...] The post Intent to Ship: JPEG XL appeared first on Mozilla Hacks - the Web developer blog.

## How Playwright Frameworks get configured with playwright.config.ts

DevFeed: [How Playwright Frameworks get configured with playwright.config.ts](<https://devfeed.tech/articles/how-playwright-frameworks-get-configured-with-playwright-config-ts-22418.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/how-playwright-frameworks-get.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-15T02:30:20Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [bun](<https://devfeed.tech/tags/bun.md>), [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [config](<https://devfeed.tech/tags/config.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This tutorial examines the playwright.config.ts file generated by `bun create playwright`. It explains default test settings, browser projects for Chromium, Firefox, and WebKit, mobile and branded browser configurations, and how retries differ between local runs and CI/CD pipelines.

### Source excerpt

When we installed bun, a new package manager owned by Anthropic, then ran "bun create playwright", a new automation framework was stood up, along with sample tests, and a Playwright configuration file. In this post, we will be examining the file generated: playwright.config.ts. Personally, I find the pre-generated file very hard to scan... there are so many options and documentation in the comments, it is difficult for me to focus on the code. Let's examine just the code generated below. If you need to see the whole file, you can see it here: https://playwright.dev/docs/test-configuration Playwright.dev / Configuration mentions, "Playwright has many options to configure how your tests are run. You can specify these options in the configuration file". What is Configured By Default? import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ testDir: './tests', fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: 'html', // baseURL: 'http://localhost:3000', /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', }, /* Configure projects for major browsers */ projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, { name: 'firefox', use: { ...devices['Desktop Firefox'] }, }, { name: 'webkit', use: { ...devices['Desktop Safari'] }, }, }); I know what you are thinking ... What the heck is process.env.CI ? 2 : 0? This is know as a ternary operator. It is a shorthand for: "If A then B, else C". You can run tests two ways: Locally, on your local machine, or through a CI / CD Pipeline like Jenkins, GitHub Actions, or GitLab. If you are running tests on CI / CD, the process.env.CI would automatically get set. Since A is true, the value of retries would be "2". If you are running tests locally, the process.env.CI would NOT get set. Since A is false, the value "0" would be selected. CI /

## Running Tests with Playwright Test Explorer and Generating Tests with Codegen

DevFeed: [Running Tests with Playwright Test Explorer and Generating Tests with Codegen](<https://devfeed.tech/articles/running-tests-with-playwright-test-explorer-and-generating-tests-with-codegen-22423.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/running-tests-with-playwright-test.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-11T03:00:47Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Visual Studio Code](<https://devfeed.tech/topics/visual-studio-code.md>), [browser](<https://devfeed.tech/topics/browser.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [testing](<https://devfeed.tech/tags/testing.md>), [vscode](<https://devfeed.tech/tags/vscode.md>)

### AI overview

A tutorial on using Playwright Test Explorer in VS Code to discover, run, and debug tests across Chromium, Firefox, and WebKit, and on using Playwright's CodeGen to generate test drafts with locators and assertions from browser interactions.

### Source excerpt

Finding the best locator for a web element can be a hassle: Right clicking on an element in Google Chrome. Inspecting the element. Going to Chrome Developer Tools. Try to decide what to do if there isn't a clear test id. Playwright comes with a built in code generator where it can built out a rough draft of a test while you interact with a website. "Playwright will look at your page and figure out the best locator, prioritizing role, text and test id locators. If the generator finds multiple elements matching the locator, it will improve the locator to make it resilient that uniquely identify the target element", according to Playwright.dev / Test Generator. Do you have the Integrated Development Environment (IDE) by Microsoft, VS Code? You can get it at the Visual Studio Marketplace. Playwright Test Explorer Playwright.dev / Getting Started VS Code: https://playwright.dev/docs/getting-started-vscode After installation, you will see a beaker icon in your VS Code left navigation menu. Selecting that, you can see your tests, such as the default ones Playwright automatically adds when it is installed: Here you can see that Test Explorer has discovered the test suite example.spec.ts, along with two tests it created: has title: Verifies that if you go to playwright.dev, that it has a link titled "Get Started". get started link: Verifies at playwright.dev that after clicking on Get Started link, the heading says "Installation". Selecting the green arrow button will open up three browser windows: Chromium, Firefox, and a WebKit browser created by Playwright, mimicking Safari. It will run a total of six tests. But wait! There's more! You can: Run a single test. Run all tests at different levels. Run on multiple browsers. Show a browser. You can also debug your tests: Set breakpoints by clicking on the gutter next to a line number Right clicking the test and select "Debug test". Running your test will pause at your breakpoint, allowing you to step through your code. You can

## Paul Klein on collapsing the agent stack into one platform

DevFeed: [Paul Klein on collapsing the agent stack into one platform](<https://devfeed.tech/articles/paul-klein-on-collapsing-the-agent-stack-into-one-platform-16043.md>)

Original publisher: [Read original article](<https://workos.com/blog/paul-klein-browserbase-agent-stack-aie-2026>)

Author: WorkOS

Published: 2026-08-05T23:22:36Z

Content type: article

Language: en

Sources: [WorkOS Blog](<https://devfeed.tech/sources/workos-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [browser](<https://devfeed.tech/topics/browser.md>), [API](<https://devfeed.tech/topics/api.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [caching](<https://devfeed.tech/tags/caching.md>), [model](<https://devfeed.tech/tags/model.md>), [route](<https://devfeed.tech/tags/route.md>), [routing](<https://devfeed.tech/tags/routing.md>), [search](<https://devfeed.tech/tags/search.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

Browserbase founder and CEO Paul Klein discusses the company's effort to combine browser infrastructure, search, fetching, models, routing, and caching into one platform for web-browsing agents. The article also covers the launch of Browserbase agents, a prebuilt harness intended to reduce the work required to build such agents.

### Source excerpt

Browserbase founder Paul Klein on collapsing the agent stack into one platform, pointing cheap models at simple sites, and why speed is the last constraint.

## Announcing a Trillion Dollar Security grant for WEBCAT

DevFeed: [Announcing a Trillion Dollar Security grant for WEBCAT](<https://devfeed.tech/articles/announcing-a-trillion-dollar-security-grant-for-webcat-17230.md>)

Original publisher: [Read original article](<https://blog.ethereum.org/en/2026/08/05/1ts-grant>)

Author: Ethereum Foundation Access Cluster

Published: 2026-08-05T00:00:00Z

Content type: release

Language: en

Sources: [Ethereum Foundation Blog](<https://devfeed.tech/sources/ethereum-foundation-blog.md>)

Topics: [Ethereum](<https://devfeed.tech/topics/ethereum.md>), [Security](<https://devfeed.tech/topics/security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [ethereum](<https://devfeed.tech/tags/ethereum.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [funding-coordination](<https://devfeed.tech/tags/funding-coordination.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [security](<https://devfeed.tech/tags/security.md>), [signing](<https://devfeed.tech/tags/signing.md>), [supply-chain-attacks](<https://devfeed.tech/tags/supply-chain-attacks.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>)

### AI overview

The Ethereum Foundation's Trillion Dollar Security initiative announced a grant to the Freedom of the Press Foundation to support continued development of WEBCAT, an open source tool that enables browsers to verify whether code served by enrolled websites matches code published by their developers. The grant will also support bringing this protection to Ethereum wallets and apps.

### Source excerpt

The Ethereum Foundation's Trillion Dollar Security (1TS) initiative is proud to announce a grant allocation to Freedom of the Press Foundation (FPF) to support the continued development of WEBCAT. WEBCAT is an open source tool that lets browsers verify that code served by an enrolled website matches what its developers...

## The challenge of adding a Web target to DroidconKotlin - Kevin Schildhorn

DevFeed: [The challenge of adding a Web target to DroidconKotlin - Kevin Schildhorn](<https://devfeed.tech/articles/the-challenge-of-adding-a-web-target-to-droidconkotlin-kevin-schildhorn-38156.md>)

Original publisher: [Read original article](<https://touchlab.co/adding-web-target-to-droidcon>)

Published: 2026-07-22T18:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Web](<https://devfeed.tech/topics/web.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [wasm](<https://devfeed.tech/topics/wasm.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [crashlytics](<https://devfeed.tech/tags/crashlytics.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [droidcon](<https://devfeed.tech/tags/droidcon.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [project](<https://devfeed.tech/tags/project.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

This post explains how Touchlab added browser Web support to the DroidconKotlin multiplatform app. It covers dependency limitations, the decision to use Web instead of Kotlin WASM, SQLDelight support, Coil and Okio filesystem issues, the lack of Firebase Crashlytics Web support, and localization and resource handling with Compose Multiplatform.

### Source excerpt

We recently added support for Web to our DroidconKotlin app. In this post we'll go over our process and the difficulties of adding a Web target to an existing project.

## GPT-Red: Unlocking Self-Improvement for Robustness

DevFeed: [GPT-Red: Unlocking Self-Improvement for Robustness](<https://devfeed.tech/articles/gpt-red-unlocking-self-improvement-for-robustness-6701.md>)

Original publisher: [Read original article](<https://openai.com/index/unlocking-self-improvement-gpt-red>)

Published: 2026-07-15T10:00:00Z

Content type: article

Language: en

Sources: [OpenAI News](<https://devfeed.tech/sources/openai-news.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [ai safety](<https://devfeed.tech/topics/ai-safety.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Responsibility & Safety](<https://devfeed.tech/topics/responsibility-safety.md>), [Training AI Models](<https://devfeed.tech/topics/training-ai-models.md>), [Model Development](<https://devfeed.tech/topics/model-development.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [Bug Bounty](<https://devfeed.tech/topics/bugbounty.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-safety](<https://devfeed.tech/tags/ai-safety.md>), [attacks](<https://devfeed.tech/tags/attacks.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [gpt](<https://devfeed.tech/tags/gpt.md>), [model](<https://devfeed.tech/tags/model.md>), [models](<https://devfeed.tech/tags/models.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [openai](<https://devfeed.tech/tags/openai.md>), [prompt-injection](<https://devfeed.tech/tags/prompt-injection.md>), [safety](<https://devfeed.tech/tags/safety.md>), [tool](<https://devfeed.tech/tags/tool.md>), [tools](<https://devfeed.tech/tags/tools.md>), [train](<https://devfeed.tech/tags/train.md>), [training](<https://devfeed.tech/tags/training.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

OpenAI describes GPT-Red, an automated red-teaming model that uses adversarial attacks and self-play to find vulnerabilities, generate training data, and improve the robustness of future AI systems against prompt injection. The approach complements human and third-party red-teaming, layered safeguards, and real-time monitoring.

### Source excerpt

Explore GPT-Red, OpenAI's automated red teaming system that uses self-play to improve AI safety, alignment, and prompt injection robustness.

## The Electron browser is being deprecated in Cypress

DevFeed: [The Electron browser is being deprecated in Cypress](<https://devfeed.tech/articles/the-electron-browser-is-being-deprecated-in-cypress-12615.md>)

Original publisher: [Read original article](<https://www.cypress.io/blog/the-electron-browser-is-being-deprecated-in-cypress/>)

Published: 2026-07-10T15:15:58Z

Content type: article

Language: en

Sources: [Cypress Blog](<https://devfeed.tech/sources/cypress-blog.md>)

Topics: [Cypress](<https://devfeed.tech/topics/cypress.md>), [Electron](<https://devfeed.tech/topics/electron.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Chromium](<https://devfeed.tech/topics/chromium.md>), [Continuous integration](<https://devfeed.tech/topics/continuous-integration.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [edge](<https://devfeed.tech/tags/edge.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

Cypress is deprecating its bundled Electron browser starting with Cypress 16.0.0 and plans to remove it in a future major version. The article explains that tests can produce inconsistent results in Electron compared with users' installed browsers, and recommends moving local and CI runs to installed browsers such as Chrome for Testing, Chrome, Firefox, or Edge.

### Source excerpt

We're deprecating the Electron browser in Cypress, starting in Cypress 16.0.0, with removal in a future major version. After years of seeing inconsistent results between Electron and the browsers people actually use, we are standardizing on installed browsers for more reliable test results.

## Safari 27's Web Platform Test progress compared with Firefox and Chromium

DevFeed: [Safari 27's Web Platform Test progress compared with Firefox and Chromium](<https://devfeed.tech/articles/abject-praise-26565.md>)

Original publisher: [Read original article](<https://infrequently.org/2026/07/abject-praise/>)

Author: Alex Russell

Published: 2026-07-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Alex Russell](<https://devfeed.tech/sources/alex-russell.md>)

Topics: [browser](<https://devfeed.tech/topics/browser.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [Chromium](<https://devfeed.tech/topics/chromium.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [competition](<https://devfeed.tech/tags/competition.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [openweb](<https://devfeed.tech/tags/openweb.md>), [safari](<https://devfeed.tech/tags/safari.md>), [test](<https://devfeed.tech/tags/test.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>), [webdev](<https://devfeed.tech/tags/webdev.md>)

### AI overview

An opinion article argues that Safari 27's quality and Web Platform Test improvements should be assessed against its slower release cadence and compared with Firefox and Chromium. It says Safari's time-weighted rate of improved tests is lower than those competitors.

### Source excerpt

It's perilous to disagree with someone as wise and thoughtful as Jeremy, but for the past fortnight his post in response to Apple's iOS 27 marketing invades my quiet moments like a cricket in the attic. "Why", I ruminate, "should someone who understands the state of play give Apple credit for doing less than the minimum while rubbishing those who have consistently done more?" Contents Redux Features Over Tests Focus Areas Consequences You Do Not Have To Hand It To Them Everywhere You Turn Quality Has A Quality All Its Own Redux Like Apple's previous marketing of Safari 16.4 and Safari 26, the conjoined September release of Safari and iOS 27 documents an achingly slow release cycle. It would be one thing if the features or spec conformance were world-beating, but looking closely at the release notes, Safari 27 is set to deliver fixes for issues that, by and large, competing engines didn't suffer.1 Don't get me wrong: it's great that Apple is focusing on quality; it remains a persistent issue for Safari. But how much relief should long-suffering web developers expect? The best comparative measures come from the communal Web Platform Tests project. Comparing the current experimental builds with stable channel releases can illuminate the scale of change we can expect when the next major version of each browser launches:2 WPT Test Pass Rates (%) 90% is the minimum Apple requires across all WPT tests for competitors' engines in the EU and Japan where it has been forced to allow them (in theory). Safari barely clears the bar. Source: wpt.fyi It would appear that Safari is closing on Firefox, but this is misleading. Apple managed seven releases over the past year, or a roughly eight week cadence. Mozilla and Chromium, meanwhile, have released 12 versions to stable, or one a month. These serve as denominators (7.4 weeks vs. 4.3) when calculating rates of improvement. Safari's larger increase in passing tests between nightly and stable versions (1558 vs. 990 for Firefox) look

## Block Everything You Hate Online with AdGuard Home

DevFeed: [Block Everything You Hate Online with AdGuard Home](<https://devfeed.tech/articles/block-everything-you-hate-online-with-adguard-home-10728.md>)

Original publisher: [Read original article](<https://noted.lol/adguard-home/>)

Author: Jeremy

Published: 2026-06-25T19:47:00Z

Content type: article

Language: en

Sources: [Noted](<https://devfeed.tech/sources/noted.md>)

Topics: [Network](<https://devfeed.tech/topics/network.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>)

Tags: [ads](<https://devfeed.tech/tags/ads.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [devices](<https://devfeed.tech/tags/devices.md>), [dns](<https://devfeed.tech/tags/dns.md>), [extensions](<https://devfeed.tech/tags/extensions.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [internet](<https://devfeed.tech/tags/internet.md>), [malware](<https://devfeed.tech/tags/malware.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [self-hosted-web-tools](<https://devfeed.tech/tags/self-hosted-web-tools.md>), [self-hosting](<https://devfeed.tech/tags/self-hosting.md>), [server](<https://devfeed.tech/tags/server.md>), [servers](<https://devfeed.tech/tags/servers.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

AdGuard Home is a self-hosted, network-wide blocker for ads, trackers, malware domains, and adult content. It applies custom filtering rules across phones, tablets, smart TVs, laptops, apps, games, and streaming services, with a web dashboard for management and real-time visibility.

### Source excerpt

Self-host AdGuard Home or use their public DNS to block ads, trackers, and adult content across all your devices with ease.

## PACT: Anonymous Credentials for the Web

DevFeed: [PACT: Anonymous Credentials for the Web](<https://devfeed.tech/articles/pact-anonymous-credentials-for-the-web-4153.md>)

Original publisher: [Read original article](<https://hacks.mozilla.org/2026/06/pact-anonymous-credentials-for-the-web/>)

Author: Dennis Jackson

Published: 2026-06-23T15:29:52Z

Content type: article

Language: en

Sources: [Mozilla Hacks - the Web developer blog](<https://devfeed.tech/sources/mozilla-hacks-the-web-developer-blog.md>)

Topics: [Web](<https://devfeed.tech/topics/web.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [AI Bots](<https://devfeed.tech/topics/ai-bots.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [blog](<https://devfeed.tech/tags/blog.md>), [bots](<https://devfeed.tech/tags/bots.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [developer](<https://devfeed.tech/tags/developer.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [mozilla](<https://devfeed.tech/tags/mozilla.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [security](<https://devfeed.tech/tags/security.md>), [technical](<https://devfeed.tech/tags/technical.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

This technical companion examines PACT, a proposed approach to anonymous credentials for the web. It describes how anti-abuse systems, privacy protections, generative AI, VPN use, and browser-based AI agents create tension between preventing abuse and preserving privacy and user choice.

### Source excerpt

This is the technical companion to our update on Distilled, "Keeping the web open and private in the bot era." Here we take a deeper look at the problem space, the design we're proposing, and the problems still left to solve. Bots (and privacy-preserving browsers) not welcome Browse a news site in a private window. Shop [...] The post PACT: Anonymous Credentials for the Web appeared first on Mozilla Hacks - the Web developer blog.

## Bringing Goodnotes to the web with Swift and WebAssembly

DevFeed: [Bringing Goodnotes to the web with Swift and WebAssembly](<https://devfeed.tech/articles/bringing-goodnotes-to-the-web-with-swift-and-webassembly-2927.md>)

Original publisher: [Read original article](<https://swift.org/blog/bringing-goodnotes-to-web-with-swift/>)

Author: Yuta Saito

Published: 2026-06-01T12:00:00Z

Content type: article

Language: en

Sources: [Swift.org](<https://devfeed.tech/sources/swift-org.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [browsers](<https://devfeed.tech/topics/browsers.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [code](<https://devfeed.tech/tags/code.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [ios](<https://devfeed.tech/tags/ios.md>), [performance](<https://devfeed.tech/tags/performance.md>), [swift](<https://devfeed.tech/tags/swift.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

Goodnotes describes bringing its existing Swift-based iOS note-taking experience to web browsers by compiling Swift to WebAssembly. The approach reuses a large, performance-critical codebase and preserves consistent ink rendering and behavior across platforms.

### Source excerpt

Goodnotes has been helping millions of users take handwritten notes on iPad for over a decade, earning recognition as Apple's iPad App of the Year in 2022. Today, the same Swift code that powers our iOS app also runs seamlessly in web browsers through WebAssembly, delivering the exact same ink rendering and note-taking experience users love. This journey demonstrates that Swift excels as a cross-platform language, running high-performance applications while sharing the same codebase. Every bug fix and improvement to Goodnotes benefits all our users simultaneously, regardless of which platform they use. After two years of development and over two years in production at Goodnotes, we've shown that Swift on WebAssembly is a viable, powerful approach for building complex, performance-critical web applications. Why we chose Swift for the web When we decided to bring Goodnotes to the web in 2021, we faced a critical decision. After more than 10 years of development, we had accumulated millions of lines of Swift code that implemented countless refinements and optimizations for digital ink rendering, document synchronization, conflict resolution using Conflict-Free Replicated Data Types (CRDTs), and content search and document indexing. We need to maintain more than 60 Frames Per Second (FPS) for real-time ink rendering, which makes performance critical. A JavaScript rewrite, Flutter, or Kotlin Multiplatform would all require rewriting our entire rendering engine from scratch, a substantial undertaking that would have delayed our web launch by years and inevitably introduced behavioral differences between platforms. SwiftWasm emerged as the solution. This community-driven project allows Swift code to compile to WebAssembly, running in browsers with good performance. We started experimenting with SwiftWasm, building prototypes to validate the approach. Our first experiment focused on our handwriting component, a performance-critical part of Goodnotes that would serve as a go

## New to the web platform in May

DevFeed: [New to the web platform in May](<https://devfeed.tech/articles/new-to-the-web-platform-in-may-4174.md>)

Original publisher: [Read original article](<https://web.dev/blog/web-platform-05-2026?hl=en>)

Author: Rachel Andrew GitHub LinkedIn Mastodon Bluesky Homepage

Published: 2026-05-29T07:00:00Z

Content type: article

Language: en

Sources: [web.dev: Blog](<https://devfeed.tech/sources/web-dev-blog.md>)

Topics: [Web platform](<https://devfeed.tech/topics/web-platform.md>), [Web](<https://devfeed.tech/topics/web.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [web browsers](<https://devfeed.tech/topics/web-browsers.md>), [CSS](<https://devfeed.tech/topics/css.md>), [HTML](<https://devfeed.tech/topics/html.md>), [picture-in-picture](<https://devfeed.tech/topics/picture-in-picture.md>), [API](<https://devfeed.tech/topics/api.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [audio](<https://devfeed.tech/tags/audio.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [css](<https://devfeed.tech/tags/css.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [html](<https://devfeed.tech/tags/html.md>), [performance](<https://devfeed.tech/tags/performance.md>), [picture-in-picture](<https://devfeed.tech/tags/picture-in-picture.md>), [web](<https://devfeed.tech/tags/web.md>), [web-browsers](<https://devfeed.tech/tags/web-browsers.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>)

### AI overview

A roundup of notable web platform features that became available in stable or beta browsers during May 2026, including CSS pseudo-classes, name-only container queries, container style queries for custom properties, native lazy loading for video and audio, and the Document Picture-in-Picture API.

### Source excerpt

Discover some of the interesting features that have landed in stable and beta web browsers during May 2026.

## Why Developers Should Avoid Reimplementing Browser Features in Website Design

DevFeed: [Why Developers Should Avoid Reimplementing Browser Features in Website Design](<https://devfeed.tech/articles/don-t-roll-your-own-37666.md>)

Original publisher: [Read original article](<https://susam.net/do-not-roll-your-own.html>)

Published: 2026-05-23T00:00:00Z

Content type: opinion

Language: en

Sources: [Susam Pal](<https://devfeed.tech/sources/susam-pal.md>)

Topics: [web design](<https://devfeed.tech/topics/web-design.md>), [Website](<https://devfeed.tech/topics/website.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [developers](<https://devfeed.tech/tags/developers.md>), [modern-web-design](<https://devfeed.tech/tags/modern-web-design.md>), [web-design](<https://devfeed.tech/tags/web-design.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

This opinion article argues that web developers should avoid reimplementing browser-provided behaviors such as scrolling, link navigation, text selection, context menus, copy and paste, password fields, and date pickers when users depend on the native behavior. It compares this practice with the cryptographic principle of avoiding private, unreviewed implementations.

### Source excerpt

This is going to be a rant about modern web design practices. But before I get to that, let me begin with a familiar principle from the world of cryptography. Among software developers, and especially among those who work on security-sensitive systems, there is a well-known maxim: Don't roll your own crypto. This does not mean that nobody is allowed to write cryptographic code. Someone has to. It means that, for ordinary production software that protects sensitive data of users, we should not rely on a private, unreviewed implementation that has not been vetted by the wider software development community. We should use established, vetted software packages or tools wherever possible. Fortunately, it is now standard industry practice to avoid rolling your own crypto and instead use cryptographic algorithms and packages that have been peer reviewed and stood the test of time. It wasn't so some twenty years ago. I have seen several flawed home-grown RC4 implementations early in my career, with issues like improper initialisation vectors, predictable keystreams and partial leakage of plaintext into ciphertext, putting sensitive data of users at risk. But today, major e-commerce websites or banks typically do not use home-grown cryptography for its web services. In fact, in regulated domains such as payments, healthcare and personal data processing, doing so could violate requirements for strong cryptography, possibly leading to hefty financial penalties. Website design is obviously not cryptography. A broken scroll bar is not the same kind of failure as a broken encryption scheme. But I wish there were a similar maxim for website design as well. There are many aspects of websites where, I think, developers should not be rolling their own X, especially when X is something browsers already do well and something users depend on every day. Here I present a list of such X. Don't roll your own page scrolling. Don't roll your own link navigation. Don't roll your own text selec

## Every Voice and Video Call on Discord Is Now End-to-End Encrypted

DevFeed: [Every Voice and Video Call on Discord Is Now End-to-End Encrypted](<https://devfeed.tech/articles/every-voice-and-video-call-on-discord-is-now-end-to-end-encrypted-238.md>)

Original publisher: [Read original article](<https://discord.com/blog/every-voice-and-video-call-on-discord-is-now-end-to-end-encrypted>)

Author: Mark Smith

Published: 2026-05-18T00:00:00Z

Content type: article

Language: en

Sources: [Discord Blog](<https://devfeed.tech/sources/discord-blog.md>)

Topics: [Discord](<https://devfeed.tech/topics/discord.md>), [End-to-End Encryption](<https://devfeed.tech/topics/end-to-end-encryption.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [web browsers](<https://devfeed.tech/topics/web-browsers.md>)

Tags: [apps](<https://devfeed.tech/tags/apps.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [discord](<https://devfeed.tech/tags/discord.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [scale](<https://devfeed.tech/tags/scale.md>), [video](<https://devfeed.tech/tags/video.md>), [voice](<https://devfeed.tech/tags/voice.md>)

### AI overview

Discord has completed a multi-year migration to make end-to-end encryption standard for every voice and video call, except stage channels. The rollout extended the DAVE protocol across desktop, mobile, web browsers, gaming consoles, bots/apps, and the Social SDK.

### Source excerpt

As of March 2026, E2EE is now enforced for every voice and video call on Discord. This represents a multi-year commitment, and Discord's VP of Engineering is here to talk about why it matters.

[Next page](<https://devfeed.tech/tags/browsers.md?cursor=WyIyMDI2LTA1LTE4VDAwOjAwOjAwKzAwOjAwIiwgImIyNmQ4YjU3LWYxNWMtNDk5My04NmE0LWFhMzNiMTYwYTk1ZCJd>)