Когда вы пишете просто на React - то используете Redux store как глобальное хранилище - ничего сложного. Но когда начинаете задумываться о том, чтобы использовать Server-side Rendering - то по началу может возникать некоторая путаница с непривычки. В React - результаты запросов сохраняем в Redux store - и уже на основании этих данных рендерится страница - всё понятно. В Next.js же - страница отрендерилась на сервере - и пришла уже в виде html и css. Внимание вопрос: как тогда использовать Redux - если код страницы нам уже пришёл? И для чего вообще в таком случае нужен Redux при использовании Next? Работает это примерно так: страница рендерится на сервере. Когда пользователь заходит на сайт - он скачивает эту страницу с сервера. На этом этапе серверный рендеринг закончился. Пользователь получил страницу в базовом виде - таком, как её видит весь интернет и роботы поисковиков. В этот момент в Redux store - хранятся исключительно те значения, какие там были при инициализации.  Если после этого сделать запрос к серверу и изменить значения в store - они там сохранятся. И если все ссылки для переходов по страницам сайта были обёрнуты в тег <Link></Link> - то при переходе по ним приложение будет вести себя в плане Redux - как SPA - всё, что загружено в Redux store - останется без изменений. Например, переходим на главную страницу сайта. Получили эту страницу отрендереной с сервера. После чего залогинились - и информацию о пользователе (например, его имя) - сохранили в Redux. Тогда когда начнёте переходить на другие страницы сайта - его имя уже будет храниться в store и не придётся его каждый раз заново запрашивать.  При всём этом есть один интересный сценарий использования - как можно сочетать серверный рендеринг со store. Рассмотрим на примере: Допустим, у нас 2 глобальных свойства приходят с бекенда:  язык сайта идут сейчас технические работы или нет При этом, если пользователь изменил язык сайта - мы хотим чтобы это сохранилось для всех страниц сайта (допустим, пользователь ещё не разрешил хранит кукисы). Примерно так будет выглядеть Redux store:    Определим хуки, чтобы было удобнее работать:  Теперь перейдём к коду тестовой страницы, на которой мы будем всё это использовать: В функции "getStaticProps" - происходит получение данных с сервера. Эта информация обновляется раз в 60 секунд - т.е. Next будет раз в минуту опрашивать сервер - что поменялось. Полученные от сервера данные мы передаём в компоненту страницы - "TestPage". Потом через хук useEffect мы эти данные передаём в Redux store - 1 раз после загрузки страницы. Таким образом, у всех пользователей в store будут после загрузки страницы не те данные, которыми инициируюется store - а те данные, которые раз в минуту приходят от бекенда и рендерятся в статической странице. Сначала мы обновляем данные в store из static props, а потом уже из store берём информацию для рендеринга той страницы, которую увидит пользователь. При изменении значений в state - будет меняться и страница. При этом, если пользователь поменяет язык - то при переходе на другие страницы эту настройку в state не затрёт на те данные, которые от бекенда приходят в getStaticProps. В результате, если у нас на страницу заходят 100 пользователей в минуту - то за минуту у нас будет всего одно обращение к бекенду вместо 100. Но и если никто не зайдёт - будет всё то же 1 обращение к бекенду в минуту. (тут мы говорим не про запрос личных данных пользователя - а про данные, которые одинаковые для всех пользователей. Имя пользователя придётся запрашивать всё те же 100 раз). Таким образом, используя Next.js - можно инициировать Redux данными с бекенда, не делая каждый раз запрос к бекенду для каждого пользователя по поводу общих данных (которые одинаковые для всех пользователей) - и таким образом ощутимо уменьшить нагрузку на бекенд. P.S: ищу удалёнку - контакты в профиле. Фронтендер, дизайнер.