Next.js, фильтры без client state
Когда фильтры в каталоге живут в client state, почти сразу появляется знакомый набор задач: синхронизировать их с URL, не потерять при reload, поддержать back/forward, не запутаться в useEffect и не разнести логику по нескольким уровням интерфейса.
В App Router эту конструкцию часто можно упростить. Если фильтр описывает состояние страницы, его можно держать в URL. Тогда searchParams становятся входом для серверной страницы, а данные запрашиваются уже от маршрута.
Получается более жёсткая и понятная модель: адрес описывает состояние, сервер читает его и отдаёт UI с нужным результатом. Меньше скрытого client state, меньше дублирования, меньше ручной синхронизации.
Это не универсальное правило для любого флага в интерфейсе. Но для поиска, сортировки, фильтров каталога и пагинации такой подход часто оказывается чище и устойчивее.
Статья на Хабр
Проект: Goods Finder
Stepik: Next.js I: JavaScript 2026