This tutorial is a solution if your store switcher is not working when customer is logged in Magento.
It happens because there is a difference between 2.3-develop and 2.3.3 for the di.xml file of the store module.
Check the following changes to resolve this issue :
First of all override the following file :
magento2/app/code/Magento/Store/etc/di.xml
& Replace the following code :
<type name="MagentoStoreModelStoreSwitcher">
<arguments>
<argument name="storeSwitchers" xsi:type="array">
<item name="cleanTargetUrl" xsi:type="object">MagentoStoreModelStoreSwitcherCleanTargetUrl</item>
<item name="manageStoreCookie" xsi:type="object">MagentoStoreModelStoreSwitcherManageStoreCookie</item>
<item name="managePrivateContent" xsi:type="object">MagentoStoreModelStoreSwitcherManagePrivateContent</item>
<item name="hashGenerator" xsi:type="object">MagentoStoreModelStoreSwitcherHashGenerator</item>
</argument>
</arguments>
</type>
With
<type name="MagentoStoreModelStoreSwitcher">
<arguments>
<argument name="storeSwitchers" xsi:type="array">
<item name="cleanTargetUrl" xsi:type="object">MagentoStoreModelStoreSwitcherCleanTargetUrl</item>
<item name="manageStoreCookie" xsi:type="object">MagentoStoreModelStoreSwitcherManageStoreCookie</item>
<item name="managePrivateContent" xsi:type="object">MagentoStoreModelStoreSwitcherManagePrivateContent</item>
</argument>
</arguments>
</type>
We deleted the following line and the store switcher started working for logged in customers.
<item name="hashGenerator" xsi:type="object">MagentoStoreModelStoreSwitcherHashGenerator</item>
Please let us know if this article is helpful to you or not.

