TC39 ShadowRealm — изолированные контексты JS на стадии 2.7 — Предложение TC39 позволяет запускать JS в изолированных контекстах с собственными глобальными объектами — в том же потоке, что и основной код. Два метода — evaluate() и importValue() — достаточно, чтобы изолировать сторонние скрипты, рекламу и тесты без загрязнения main context. Пока нет в браузерах.
@effector/router v1.0.0 — роутер на стыке atomic-router и argon-router — Effector core team объединили идеи atomic-router и argon-router в новый @effector/router. Предыдущие роутеры больше не поддерживаются. Для миграции — заменить зависимости на @effector/router@v1.0.0-rc.0 и @effector/router-react@v1.0.0-rc.0, плюс использовать historyAdapter(history) из-за ломающих изменений.
Supply chain атака на @tanstack — 84 вредоносных пакета в npm — Злоумышленник опубликовал 84 вредоносные версии в 42 пакетах @tanstack через цепочку уязвимостей: pull_request_target в GitHub Actions → отравление pnpm-кэша → кража OIDC-токена из памяти раннера. Payload собирал AWS/GCP/K8s токены, SSH-ключи и самораспространялся как червь. Пакеты помечены, но стоит проверить проекты на наличие заражённых версий.
Проекты
@web-kits/audio — декларативный аудиосинтез для веба — Определяй звуки как plain-объекты и проигрывай одной функцией. TypeScript, React-хуки, CLI для пакования sound patches — всё включено. Звучит как nice DX-утилита для тех, кто хочет кастомные звуки без Web Audio API boilerplate.
reactive-framework-test-suite — бенчмарки-кросс-тесты реактивности — Ментейнер реактивности Vue запустил набор тестов корректности для реактивных библиотек — это не бенчмарки, а проверка edge cases. Почти все библиотеки недопроходят десятки тестов. Реатом провалился на одном: рекурсивное обновление computed без явного break-условия. Автор считает, что библиотека должна останавливаться сама; разработчики Реатома — что это ответственность пользователя.
Статьи, мнения, туториалы
JS/TS
Thenable-трюки: ленивые вычисления через совместимость с Promise — Thenable-объекты — не только про бэкенд-совместимость с Promise. Автор показывает, как создать контейнер ленивых вычислений, который лениво считает значение при первом await, кеширует результат и поддерживает монадический bind для цепочек отложенных операций. Классический пример: инициализация конфига из IndexedDB, которая происходит только когда кто-то реально это запрашивает.
CSS
Callout UI с CSS offset-path и border-линиями — Как сделать callout-элементы (текстовые блоки с указывающей линией) без SVG и canvas — чистый CSS. offset-path: border-box приклеивает текстовый бокс к рамке контейнера, а border-box + border-width рисует leader-line. Skew для диагональных линий, box-shadow для теневых, corner-shape для скруглённых углов. Всё анимируется.