SR и гидрация обещают быстрый рендер, но на деле фронтендеры часто сталкиваются с расхождениями между сервером и клиентом.
#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤4🥰3
This media is not supported in your browser
VIEW IN TELEGRAM
Достаточно добавить атрибут
disabled к тегу `<fieldset>` — и все элементы формы внутри него станут неактивными автоматически, без необходимости прописывать это для каждого по отдельности.#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2🥰2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11
Что произойдёт с состоянием компонента, если изменить его key?
<UserForm key={userId} userId={userId} />
Допустим, userId меняется с 42 на 43.
❤️ — состояние сохранится, изменятся только props
🔥 — React пересоздаст компонент, и state сбросится
👍 — state сбросится только при использовании React.memo
И да: key нужен не только для списков. Его можно намеренно использовать, например, чтобы очистить форму при переключении на другого пользователя.
#career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤3👍2🥰1
ChartGPU — библиотека для визуализации больших датасетов через WebGPU вместо Canvas2D или WebGL.
Особенно интересно для дашбордов, мониторинга, финтеха и observability-интерфейсов, где обычный Canvas уже становится узким местом.
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🥰2
Раньше, чтобы показать поповер по ховеру, нужен был JavaScript. Теперь — достаточно HTML.
interesttarget связывает элемент-триггер и поповер. Браузер сам обрабатывает hover, focus или long-press и показывает подсказку.
Можно совмещать с Popover API и Anchor Positioning для точного позиционирования.
Пока экспериментальная — работает в Chromium-браузерах (Chrome 135+, Edge 135+). В Firefox и Safari API ещё не реализован, поэтому стоит использовать фолбэк или JS-вариант для совместимости.
#readme #html
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
С помощью overflow-anchor можно обойтись без MutationObserver и scrollTo():
<div id="scroller">
...
<div id="anchor"></div>
</div>
#scroller * { overflow-anchor: none; }
#anchor { overflow-anchor: auto; height: 1px; }
Отключаем scroll anchoring для содержимого и оставляем его только на элементе в конце списка. Браузер использует его как якорь и удерживает скролл у нового контента.
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥰2🌚2
📐 Делаем fluid-значения в CSS предсказуемыми
clamp() отлично подходит для адаптивных размеров, но результат может быть вроде 19.7px или 143.2px.
Функция round() позволяет привязать вычисленное значение к нужному шагу:
Теперь размер будет двигаться по шагам: 16px → 20px → 24px → 28px → 32px. Можно использовать up, down, nearest или to-zero.
Особенно полезно для типографики, spacing и привязки элементов к layout grid.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme #css
clamp() отлично подходит для адаптивных размеров, но результат может быть вроде 19.7px или 143.2px.
Функция round() позволяет привязать вычисленное значение к нужному шагу:
.title {
--size: clamp(1rem, 1rem + 2cqw, 2rem);
font-size: round(down, var(--size), 4px);
}
Теперь размер будет двигаться по шагам: 16px → 20px → 24px → 28px → 32px. Можно использовать up, down, nearest или to-zero.
Особенно полезно для типографики, spacing и привязки элементов к layout grid.
#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
sibling-index() и sibling-count() — позволяют получить позицию элемента среди соседей и их общее количество. Удобно, например, для динамических эффектов и декоративных раскладок.Теперь обе возможности доступны во всех основных браузерах.
А в экспериментальном режиме Firefox 154 также получил progress() — ещё один интересный шаг в сторону более гибной fluid-типографики.
#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3🥰1🎉1
🔥 — 1 2 3
❤️ — undefined undefined undefined
🥰 — 3 3 3
🤔 — 0 1 2
🐸 Библиотека фронтендера
#code_challenge #js
❤️ — undefined undefined undefined
🥰 — 3 3 3
🤔 — 0 1 2
#code_challenge #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰71❤19🔥4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Port-Whisperer — CLI для тех случаев, когда на 3000, 5173 или другом порту внезапно уже что-то запущено.
Полезная утилита для локальной разработки, особенно когда одновременно работают несколько проектов.
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰3🔥1🥱1
Разделённые поля, кастомные маски, десятки строк JS и ещё одна зависимость в бандле — всё это часто делают ради обычного одноразового кода.
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰3
Если приложение «работает у вас», это не показатель. Важно понимать, под какие версии браузеров фактически собирается билд.
npx browserslist
Команда выводит реальный список целевых браузеров на основе .browserslistrc или package.json.
— транспиляцию через
@babel/preset-env— CSS-префиксы (Autoprefixer)
— подключение polyfills
— размер bundle
Без проверки вы либо раздуваете сборку, либо теряете совместимость. Browserslist — инструмент контроля, а не просто CLI-утилита.
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥰3😁2
This media is not supported in your browser
VIEW IN TELEGRAM
liquid-gooey превращает обычные React-компоненты в «жидкие» интерфейсы: элементы могут сливаться, тянуться друг за другом и плавно менять форму.
Эффект применяется к отдельному SVG-слою, а настоящий DOM остаётся сверху. Поэтому текст, иконки, фокус и интерактивность не страдают от blur-фильтров.
npm install liquid-gooey
<Liquid blur={6} contrast={18}>
<Liquid.Item x={open ? -54 : 0} y={open ? -34 : 0}>
<button>Menu</button>
</Liquid.Item>
</Liquid>
Есть поддержка Safari, prefers-reduced-motion, CSS-темизации и MIT-лицензия.
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤4👏2🥰1
Вы пишите let x = 1 + 2, а под капотом V8 уже строит синтаксическое дерево, генерирует байт-код и думает, стоит ли компилировать это в машинный код.
Что в карточках:
— Как V8 парсит и интерпретирует код
— Что делает TurboFan и зачем нужен байт-код
— Как работает сборка мусора
— И почему порядок добавления свойств в объект — это не мелочь
Если хотите писать реально быстрый JS, нужно понимать, как его читает движок.
#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🥰2