Remember the days when web pages were actually ready to use when they loaded? No spinners, no waiting. I miss that.
How is it that everything is so much 'better' and 'faster' now, but somehow feels crappier?
Remember the days when web pages were actually ready to use when they loaded? No spinners, no waiting. I miss that.
How is it that everything is so much 'better' and 'faster' now, but somehow feels crappier?
[Перевод] HTML Sanitizer API: конец эпохи DOMPurify и XSS-страданий
Инженеры узнают о межсайтовом скриптинге (Cross-Site Scripting, XSS) тремя способами. Счастливчики узнают о нем благодаря полезному анализу кода или проактивному правилу проверки кода. Внимательные — во время аудита безопасности, который выявляет уязвимость до того, как она попадет в продакшн. А есть те, кто узнает о нем через страдания, когда их сайт становится уязвимым. Когда злоумышленник внедряет скрипт, который крадет токены сессий из localStorage , перехватывает файлы cookie или перенаправляет пользователей на фишинговый сайт. Я лично присоединился к клубу «пострадавших» еще в 2005 году, когда встроенная Flash-подпись на форуме, которым я владел, превратилась в кошмар с точки зрения безопасности… но это уже другая история. В этой статье мы рассмотрим, как браузер, наконец, снимает с нас бремя очистки данных (sanitizing) благодаря новому HTML API Sanitizer .
https://habr.com/ru/companies/timeweb/articles/1037990/
#javascript #js #html #dompurify #sanitizer #очистка #обезвреживание #security #безопасность #timeweb_статьи_перевод
𝗦𝗮𝗹.𝗷𝘀, 𝗹𝗶𝗴𝗵𝘁𝘄𝗲𝗶𝗴𝗵𝘁 𝘀𝗰𝗿𝗼𝗹𝗹 𝗮𝗻𝗶𝗺𝗮𝘁𝗶𝗼𝗻 𝗹𝗶𝗯𝗿𝗮𝗿𝘆:
https://thewhale.cc/posts/saljs-lightweight-scroll-animation-library
Sal (Scroll Animation Library) is written with aim to provide performant and lightweight solution for animating elements on scroll. It's based on the Intersection Observer, which gives amazing performance in terms of checking the element's presence in viewport.
Deno chystá příkaz deno desktop, který umožní z běžného Deno projektu, od jednoduchého TypeScript souboru až po Next.js aplikaci, vytvořit samostatnou desktopovou aplikaci. Výstupem je redistribuovatelný binární soubor, který v sobě obsahuje kód, Deno runtime i webový renderovací engine.
Funkce zatím není ve stabilní verzi, přijde s Deno v2.9.0 a lze ji vyzkoušet […]
https://zdrojak.cz/zpravicky/deno-prichazi-s-novou-funkci-desktopove-aplikace-primo-z-typescriptu/𝗟𝗮𝘇𝘆𝗟𝗼𝗮𝗱, 𝗮 𝘃𝗮𝗻𝗶𝗹𝗹𝗮 𝗷𝗮𝘃𝗮𝘀𝗰𝗿𝗶𝗽𝘁 𝗹𝗮𝘇𝘆𝗹𝗼𝗮𝗱 𝘀𝗼𝗹𝘂𝘁𝗶𝗼𝗻:
#JS #Lasy load #performance
https://thewhale.cc/posts/lazyload-a-vanilla-javascript-lazyload-solution
LazyLoad is a fast, lightweight and flexible script that speeds up your web application by loading images, video or iframes as they enter the viewport. It’s written in plain “vanilla” JavaScript, uses Intersection Observers, and supports responsive images. It’s also SEO-friendly and it has some other notable features.
Releasing Babel 8 today: ESM-only, drop ES5 default, and a smooth migration path. The @babeljs team ships version 8 after eight years, during which weekly downloads grew from 1.7M to 651M, focusing on three changes rather than new features. Babel is now ESM-only and needs Node.js 22+, no longer compiles to ES5 by default but targets modern browsers via Browserslist, and drops the loose and spec options for assumptions for one tradeoff at a time. #js #tools
Вышел Babel 8: только ESM, без ES5 по умолчанию и плавный путь миграции. Команда Babel выпустила восьмую версию спустя восемь лет, за которые загрузки выросли с 1,7 до 651 млн в неделю, сосредоточившись на трёх изменениях, а не на новых возможностях. Теперь Babel только ESM и требует Node.js 22+, больше не компилирует в ES5, а целится в современные браузеры через Browserslist и заменяет общие опции loose и spec на assumptions, включаемые по отдельности. #js #tools
GenUI: первый взгляд на json-render и MCP Apps
Чат как интерфейс упирается в потолок. Текст хорош, когда ответ это объяснение или код. Но на запрос «покажи продажи за квартал и сравни с прошлым годом» модель отвечает стеной чисел, в которой ничего не покрутить. Хочется другого: интерактивный дашборд прямо в чате, который при следующей реплике не пересобирается с нуля, а аккуратно обновляется. Очевидное решение — попросить модель сгенерировать React-компонент — оказывается тупиком. Вывод нестабилен: один и тот же промпт сегодня даёт useState , завтра — Zustand . Сгенерированный JSX это исполняемый код, то есть открытая дверь для инъекций: в мае 2025 Invariant Labs показали на официальной GitHub MCP-интеграции, как вредоносный issue провоцирует агент на утечку данных из приватных репозиториев. И главное, что нет инкрементальности: на запрос «добавь фильтр» модель регенерирует весь компонент, состояние теряется, ввод сбрасывается. Вывод: код это плохой интерфейс между LLM и приложением. Нужен промежуточный слой. Эта статья про два таких слоя: json-render отвечает за то, что и как рендерить из декларативной спецификации, MCP Apps — за то, где и как доставить этот интерфейс в ассистент. По официальному анонсу MCP Apps поддерживаются в Claude, Goose, VS Code Insiders и ChatGPT; json-render заявляет MCP-интеграцию для Claude, ChatGPT, Cursor и VS Code. Через всю статью я протащу один пример: дашборд продаж, который пользователь докручивает репликами «добавь разбивку по регионам», «сравни с прошлым годом», «убери блок». Сразу обозначу жанр: это мой первый пилотный заход в тему, поэтому текст ближе к обзору с пробами, чем к боевому отчёту из эксплуатации.
They get close to saying the thing that's been driving me lately:
"something that a lot of companies have run into of like they have a Rails backend or you know something that was fine serverside rendering stuff the way we've always done the web and then they were like you know what if we it was all #React and then it actually wasn't faster in the end"
[...]
"Codepen was a rails app, but react server side components don't integrate with Rails, at least not that they could see. Half the app on rails, half on Next JS, and a Go API."
Yeah. #SSR evolved from the wrong direction.Taking a browser-native #JS only thing and trying to make it work on the server, where existing tech stacks vary widely is a recipe for pain.
From this podcast with Shaw from @codepen

This week, Robbie and Adam welcome Shaw from CodePen to talk CSS animations, web components, server side rendering nightmares, and why building things by hand still matters in the age of AI slop. They dig into the CodePen 2.0 rewrite, Apollo GraphQL cache mani...