webpack или gatsby. последний используется для генерации статичных страниц но мне лично там нравится быстрый старт без диких настроек вебпака. вставил конфиг и полетел)
Сначала создаешь стор и передашь ему редюсеры. далее в корневом компоненте обарачиваешь провайдером и передаешь ему стор. Потом в необходимом компоненте мапиш стейт и передаеш компоненту как пропс. и этот компонент меняется в соответсвии с стором.
Если есть ключи то лучше обновлением. Мы как то раз ключи потеряли, пришлось выпускать приложение с новым пакетом. Потеряли немало клиентов так как они не смогли получить новые обновления
Самый простой способ подгрузка через ajax. При нажатии на меню отправляешь запрос на сервер, он возвращает тебе часть контента которую ты вставляешь вместо старого