Web App Manifest — это JSON-файл, определяющий поведение веб-приложения при установке на устройство пользователя. Он позволяет задавать иконки, цветовую схему, ориентацию экрана и другие параметры, которые делают веб-приложение ближе к нативному по ощущениям.
Файл обычно располагается в корне проекта и подключается в HTML через тег:
<link rel="manifest" href="/manifest.json">
Простейший пример manifest.json:
{
"name": "Preact App",
"short_name": "Preact",
"description": "Пример Preact приложения с манифестом",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#0d6efd",
"icons": [
{
"src": "/icons/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icons/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
standalone, fullscreen,
minimal-ui, browser).Preact использует стандартный HTML-шаблон через
index.html, поэтому подключение манифеста выполняется
привычным образом:
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
При сборке с помощью Vite или Webpack можно положить
manifest.json в папку public для
автоматической доступности.
display
standalone — приложение открывается без браузерных
элементов.fullscreen — занимает весь экран.minimal-ui — минимум элементов управления.browser — стандартный браузерный режим.orientation
portrait,
landscape).scope
"scope": "/app/" ограничит приложение
страницами /app/*.related_applications
prefer_related_applications
true, браузер рекомендует установить нативное
приложение, если оно доступно.Иконки должны быть разных размеров для корректного отображения на
разных устройствах. Рекомендуется иметь минимум две:
192x192 и 512x512. Форматы: PNG, SVG.
Пример:
"icons": [
{
"src": "/icons/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icons/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
Для проверки корректности манифеста можно использовать:
Ошибки обычно возникают из-за:
start_url и scope.В Preact можно менять theme_color или
background_color динамически, используя Jav * aScript:
const metaTheme = document.querySelector('meta[name="theme-color"]');
metaTheme.setAttribute('content', '#ff0000');
Это позволяет адаптировать интерфейс под выбранную тему или пользовательские настройки.
public/manifest.json.<link rel="manifest">.name,
short_name, start_url, display,
icons.theme_color, background_color,
orientation, scope.Web App Manifest является фундаментальной частью любого Preact-приложения, претендующего на статус Progressive Web App, обеспечивая удобство установки, нативный вид и контроль над поведением на устройстве пользователя.