Каждый проект проходит один и тот же путь. Сначала — кнопка переключения темы. Через месяц — система настроек.
Разница в том, что вы выбрали в первый день.
Состояние в браузере, API как у
useState:
const [theme, setTheme] = useLocalStorage('theme', 'dark')
- Одна настройка
- Прототип или MVP
- Нет планов масштабирования
- Ключи
localStorage расползаются по компонентам- Нет миграций при смене структуры
- Рассинхронизация состояния между вкладками
Это не баг. Это предел подхода.
Когда добавляются язык, feature flags, пользовательские настройки — нужен единый стор:
const theme = useSettings(s => s.theme)
const setTheme = useSettings(s => s.setTheme)
- Один источник правды
- Селекторы → меньше ререндеров
- Миграции версий состояния из коробки
- Синхронизация между вкладками
- +1 зависимость
- 20-30 строк на стор вместо 3 на хук
- Архитектура, которая не разваливается через полгода
- 1 настройка →useLocalStorage
- 2-3 настройки → можно ещё потерпеть
- Система настроек →zustandсразу
localStorage — это инструмент. zustand — это способ не переписывать проект через полгода.#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3🥰2🥱1
Почему typeof null возвращает "object" ❔
Anonymous Quiz
5%
Это задумано разработчиками JavaScript
63%
Это баг из первой версии JS, который не исправляют из-за обратной совместимости
31%
null технически является объектом
1%
Это работает так только в старых браузерах
🤔8
«Для чего в JavaScript нужен BigInt?»
Большинство кандидатов отвечают слишком обобщённо — «для больших чисел». Такой ответ почти всегда считают неполным.
• ограничений типа Number
• потери точности в вычислениях
• того, когда JavaScript начинает молча врать
Выше — 5 карточек с разбором: в чём реальная проблема, что именно решает BigInt и как правильно отвечать на собеседовании
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2🥰2
Твой `package.json` устарел
Фронтенд — это уже давно не просто перекрашивание кнопок. Чтобы пройти собес в бигтех или просто чувствовать себя уверенно, нужно понимать, что происходит «под капотом» браузера и архитектуры.
Делаем
Оплачиваешь только тот, что дороже, — два других получаешь бесплатно.
Что подтянуть фронтендеру:
— алгоритмы и структуры данных (да, их спрашивают);
— основы IT (если плаваешь в сетях и протоколах).
Собрать свой стек на 2026
Дедлайн: 31 декабря.
Помощь с выбором: @manager_proglib
Фронтенд — это уже давно не просто перекрашивание кнопок. Чтобы пройти собес в бигтех или просто чувствовать себя уверенно, нужно понимать, что происходит «под капотом» браузера и архитектуры.
Делаем
git commit в твое будущее: 3 курса по цене 1.Оплачиваешь только тот, что дороже, — два других получаешь бесплатно.
Что подтянуть фронтендеру:
— алгоритмы и структуры данных (да, их спрашивают);
— основы IT (если плаваешь в сетях и протоколах).
Собрать свой стек на 2026
Дедлайн: 31 декабря.
Помощь с выбором: @manager_proglib
❤5
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14
Сетевые ошибки случаются постоянно. Простое решение на 15 строк:
— Автоматический retry при временных ошибках
— Экспоненциальная задержка (1s → 2s → 4s)
— Не retry'ит клиентские ошибки (400, 401, 403, 404)
— Retry только для: 408, 429, 500, 502, 503, 504
Пример использования:
try {
const res = await fetchWithRetry('/api/data');
const data = await res.json();
console.log(data);
} catch (err) {
console.error('Все попытки неудачны:', err);
}
⚠️ fetch НЕ отклоняет промис на HTTP ошибках — нужна проверка
response.ok— GET/PUT/DELETE запросы
— Загрузка конфигурации
— Webhook'и
— POST без идемпотентности
— Операции с оплатой
#hotfix
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🥰2
Компонент <Activity> наконец-то позволяет скрывать части UI без потери состояния и без лишних рендеров.
А новые Performance Tracks в Chrome DevTools показывают всю картину на одном таймлайне — больше не нужно жонглировать двумя инструментами.
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥰2