Hi,
I think changing the line:
if((!HIKASHOP_J30 || (isset($app->input) && $app->input->get('Itemid', null) != null)) || hikashop_isClient('administrator')) {
to:
if(!empty($app) && method_exists($app, 'getTemplate')) {
in the file administrator/components/com_hikashop/helpers/helper.php will fix the problem without creating other issues thanks to the try/catch that was added on the next line after that condition was created when upgrading HikaShop for Joomla 3 support years ago.
That way, we just make sure that $app JApplication is already loaded by Joomla and if it is, we call getTemplate, and if it fails in there (because the template is not yet known), the try/catch should prevent an error.
I did some tests on my end and the change seems to work fine without creating issues. Can you test it on your end ?
If it works for you too, we can include the change for the next version of HikaShop.