6 Aug 2026, 09:29 UTC194 views4 reactionsread 8 August 2026 Photo
Temporal API
Почти в каждом проекте найдётся место, где дату надо сдвинуть на месяц вперёд или посчитать разницу между двумя днями. И почти всегда ради этого в зависимостях лежит date-fns или dayjs, потому что штатный Date для такой работы не приспособлен: он мутабельный, нумерует месяцы с нуля и знает ровно одну зону, системную.
Temporal переносит эту арифметику в сам язык, и за последний год он перестал быть пред…
🔥2❤1👍1
4 Aug 2026, 14:07 UTC265 views0 reactionsread 8 August 2026 Photo
🔵Chrome 150: новые возможности CSS
Chrome в июле раскатал 150 в стейбл на основную массу пользователей — и это, пожалуй, главное событие месяца, потому что там сразу пачка возможностей CSS, ради которых давно писали костыли.
text-fit автоматически подгоняет размер шрифта под ширину контейнера — до сих пор это делалось через ResizeObserver с пересчётом font-size на каждый resize, теперь одна строка CSS.
background-…
30 Jul 2026, 09:30 UTC400 views10 reactionsread 8 August 2026 Photo
CSS Anchor Positioning — tooltip и меню без Popper.js
Позиционирование tooltip относительно кнопки годами было болью. Popper.js и Floating UI берут на себя всё: координаты, scroll, resize, переполнение viewport, разворот тултипа при нехватке места. С 2024 CSS сам умеет привязывать элементы. Chrome 125, Safari 26, Firefox 147 — везде Baseline.
Идея очень простая. Один элемент помечается как anchor-name: --my-button,…
👍4🔥3❤2🎉1
28 Jul 2026, 09:10 UTC419 views9 reactionsread 8 August 2026 Photo
useEffect: семь случаев, когда он не нужен
React 19 сужает область useEffect до одной задачи: синхронизация с внешними системами. Деривация UI из пропсов и стейта происходит в рендере, обработка действий — в обработчиках событий, загрузка данных уходит во фреймворк. В карточках рассмотрим семь случаев, когда useEffect не нужен.
#frontendvkhub #react #useeffect
👍3❤2🔥2👏1🤔1
23 Jul 2026, 09:35 UTC602 views6 reactionsread 8 August 2026 Photo
TypeScript 7.0 — это не только новый синтаксис. Главное изменение в том, что команда Microsoft перенесла компилятор с TypeScript и JavaScript на Go. Какие новые настройки действительно стоит учитывать при переходе, рассказывает старший фронтенд-разработчик VK Марат Исаев.
Новый компилятор на Go
До TypeScript 7.0 компилятор был на TypeScript и выполнялся как JavaScript-код в Node.js. Для языка это было удобно, ведь …
❤2👍2🔥2
21 Jul 2026, 09:45 UTC525 views18 reactionsread 8 August 2026 Photo
Четыре boolean-флага isLoading, isLoaded, hasError, isSuccess порождают 16 комбинаций. Валидны шесть, остальные десять компилятор пропустит, а бизнес-логика — нет.
Разрыв между типом и доменом — источник багов. Тип говорит компилятору, что все 16 комбинаций возможны. Домен говорит, что загрузка и успех одновременно невозможны. Ограничения нигде не закодированы, поэтому компилятор их не проверяет.
// 16 комбинаций, …
👍7✍4❤3💯3🔥1
16 Jul 2026, 10:34 UTC597 views16 reactionsread 8 August 2026 Photo
scheduler.yield() — нормальный способ разбивать длинные задачи
Длинные JavaScript-задачи — главная причина плохого INP. Браузер не может обработать клик или показать спиннер, пока выполняется блок дольше 50 мс. До 2024 разбивать тяжёлую работу можно было только костылями вроде setTimeout(fn, 0) или await new Promise(r => setTimeout(r, 0)). Сейчас есть scheduler.yield() — нормальный API с приоритетной очередью.
Базо…
🔥9❤3👍3👏1
14 Jul 2026, 09:04 UTC541 views17 reactionsread 8 August 2026 Photo
Форматирование и локали в платформе Intl
Intl — встроенный набор классов для форматирования и сравнения с учётом локали. Большинство фронтов тащит date-fns ради «2 дня назад», lodash для сортировки, ручные функции для денег и процентов. Почти всё это уже есть в браузере, причём заметно мощнее, чем кажется.
В карточках рассмотрим шесть классов — каждый со своим случаем, и почти каждый поднимает вопрос «А что, так мо…
👍9❤3🔥3⚡1🎉1
Showing the 8 most recent of 8 posts we hold for @frontendhubvk. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked ≈ was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.