Вариант 1:
Начальный URL Manifest.json используется только тогда, когда вы обращаетесь к нему после добавления на домашний экран. Вы можете иметь свой начальный URL как "https://example.com/myapp?isPWA=true"
На домашней странице есть логика для чтения параметра запроса и флага, а также логика, основанная на этом. В режиме браузера этот флаг не будет присутствовать, и поэтому логика должна считаться ложной в этом случае. Это общее решение для всех платформ.
Вариант 2:
В качестве альтернативы вы можете использовать обнаружение в режиме отображения в JS.
Non Safari (в новых версиях может появиться совместимость с Safari)
CSS Solution
@media all and (display-mode: standalone) {
body {
background-color: yellow;
}
}
Решение JS
if (window.matchMedia('(display-mode: standalone)').matches) {
console.log('display-mode is standalone');
}
Решение Safari JS
if (window.navigator.standalone === true) {
console.log('display-mode is standalone');
}