Есть ли какой-то media query для этого?
Нет.
Или всякими browser detector-ами пользоваться надо?
Только косвенно, по User-Agent или отсутствию некоторых функций, например serviceWorker.
Пример проверки "встроенных браузеров", используя User-Agent:
function isEmbedded(userAgent) {
const userAgents = ['FBAV', 'Instagram', 'Snapchat', 'Twitter'];
return userAgents.some(id => userAgent.includes(id));
}
console.log(isEmbedded(window.navigator.userAgent)); // true
Пример проверки "встроенных браузеров", используя отсутствие функции serviceWorker:
if (!('serviceWorker' in navigator)) console.log('Embedded?');
Библиотека
Bowser позволяет проще получать данные о браузере.