Анализ сайта ngrx.io
Основное Готовность: 100%
Домен
ngrx.io
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Сервер настроен корректно.
Цепочка редиректов:
http://ngrx.io
301 MovedPermanently
https://ngrx.io/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 28.10.2026 23:44:40.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~0,73сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,73сек оптимальна.
Объем документа
73Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 73Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 6
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 6 достаточно.
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | https://fonts.googleapis.com/css2?family=Oxanium:wght@200..800&display=swap | |
| stylesheet | https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap | |
| stylesheet | https://fonts.googleapis.com/icon?family=Material+Icons | |
| stylesheet | https://fonts.googleapis.com/css2?family=Oxanium:wght@200..800&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap | |
| stylesheet | /assets/index-C_YdUcwI.css | |
| js | module | /assets/index-Db6q11tb.js |
Серверные заголовки
Кол-во: 10
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 10шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Accept-Ranges | bytes |
| Age | 0 |
| Cache-Control | public, must-revalidate, max-age=0 |
| cache-status | "Netlify Edge"; fwd=stale; fwd-status=200; stored |
| Date | Sat, 22 Aug 2026 17:03:28 GMT |
| ETag | "fff9d9cd36f039ca69a2f326e1393dd7-ssl" |
| Server | Netlify |
| Strict-Transport-Security | max-age=31536000 |
| Vary | Accept-Encoding |
| x-nf-request-id | 01M0N6TTBPGG61T707W5VEN6BE |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Netlify
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
В заголовке Server указано: Netlify.
Мета-теги Готовность: 32%
Title
NgRx
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо увеличить число символов в title (текущее значение мало: 4, минимум: 25, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Установите мета-тег description!
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Рекомендуем прописать канонический Url.
Robots
Ошибок нет
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots не указан. Страница свободна для индексации.
Адаптивность
width=device-width, initial-scale=1
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Не найдено
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph не задана. Страница не оптимизирована под социальные сети. Мета-теги с разметкой Og помогают социальным роботам лучше структурировать Ваш сайт.
Все мета-теги
Кол-во: 3
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 3шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1 |
| name | msapplication-TileColor | #da532c |
| name | theme-color | #000000 |
Оптимизация Готовность: 37%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в единственном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 1 встречаются в тексте редко. Добавьте в контент страницы слова из тега <title>!
Абзацев с текстом 2 слишком мало. Добавьте больше абзацев с текстом (тег <p>)!
Кол-во знаков контента 939 слишком мало. Добавьте больше текста!
Кол-во слов 132 слишком мало. Добавьте больше текста (минимум 400 слов)!
Среднее число слов в абзаце 16 достаточно.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h3> 2.
Тошнота
3,16
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота превышает норму 3. Измените текст страницы!
Академич. тошнота
16,67%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота превышает норму 5-15%. Измените текст страницы!
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| chevron_right | 10 | 7,58% |
| sponsor | 3 | 2,27% |
| reference | 2 | 1,52% |
| volunteer_activism | 2 | 1,52% |
| github | 2 | 1,52% |
| effects | 2 | 1,52% |
| signals | 2 | 1,52% |
| operators | 2 | 1,52% |
| packages | 2 | 1,52% |
| angular | 2 | 1,52% |
| global | 2 | 1,52% |
| signalstore | 2 | 1,52% |
| support | 2 | 1,52% |
| light_mode | 1 | 0,76% |
| description | 1 | 0,76% |
| co_present | 1 | 0,76% |
| workshops | 1 | 0,76% |
| entity | 1 | 0,76% |
| router | 1 | 0,76% |
| schematics | 1 | 0,76% |
Индексация Готовность: 30%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 39 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 75329 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://ngrx.io/robots.txt
301 MovedPermanently
https://ngrx.io/robots.txt
200 OK
Показать содержимое robots.txt
<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<title>NgRx</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#000000">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link href="https://fonts.googleapis.com/css2?family=Oxanium:wght@200..800&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Oxanium:wght@200..800&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
<script type="module" crossorigin="" src="/assets/index-Db6q11tb.js"></script>
<link rel="stylesheet" crossorigin="" href="/assets/index-C_YdUcwI.css">
<style ng-app-id="ng">[_nghost-ng-c1775166289] {
display: block;
}
.top-banner-visible[_nghost-ng-c1775166289] {
--top-banner-height: 44px;
}
@media only screen and (max-width: 1280px) {
.top-banner-visible[_nghost-ng-c1775166289] {
--top-banner-height: 70px;
}
}
ngrx-menu[_ngcontent-ng-c1775166289] {
position: fixed;
left: 0;
top: 0;
}
.content[_ngcontent-ng-c1775166289] {
position: relative;
width: calc(100% - 270px);
left: 270px;
}
@media only screen and (max-width: 1280px) {
.content[_ngcontent-ng-c1775166289] {
width: 100%;
left: 0;
padding-top: var(--top-banner-height, 0px);
}
}</style><style ng-app-id="ng">.mobile-nav-bar[_ngcontent-ng-c2458112513] {
position: fixed;
top: var(--top-banner-height, 0px);
display: none;
background-color: var(--ngrx-bg-surface);
width: 100%;
padding: 15px 20px;
}
.mobile-nav-bar[_ngcontent-ng-c2458112513] .menu-toggle[_ngcontent-ng-c2458112513] {
display: flex;
align-items: center;
background-color: transparent;
border: none;
cursor: pointer;
}
.mobile-nav-bar[_ngcontent-ng-c2458112513] .menu-toggle[_ngcontent-ng-c2458112513] img[_ngcontent-ng-c2458112513] {
width: 30px;
margin-right: 8px;
}
@media only screen and (max-width: 1280px) {
.mobile-nav-bar[_ngcontent-ng-c2458112513] {
display: block;
}
}
.sidebar[_ngcontent-ng-c2458112513] {
display: flex;
flex-direction: column;
gap: 16px;
padding: 32px 24px;
border-right: 1px solid var(--ngrx-border-color);
}
@media only screen and (max-width: 1280px) {
.sidebar[_ngcontent-ng-c2458112513] {
background-color: var(--ngrx-bg-surface);
position: fixed;
top: 0;
left: -270px;
transition: left 0.3s ease-in-out;
width: 270px;
height: 100lvh;
overflow-y: scroll;
}
}
@media only screen and (max-width: 1280px) {
.sidebar.open[_ngcontent-ng-c2458112513] {
display: flex;
left: 0;
}
}
.sidebar[_ngcontent-ng-c2458112513] .close-menu[_ngcontent-ng-c2458112513] {
display: none;
background-color: transparent;
border: none;
width: 25px;
padding: 0;
}
@media only screen and (max-width: 1280px) {
.sidebar[_ngcontent-ng-c2458112513] .close-menu[_ngcontent-ng-c2458112513] {
display: block;
}
}
.sidebar[_ngcontent-ng-c2458112513] .close-menu[_ngcontent-ng-c2458112513] .close-menu-icon[_ngcontent-ng-c2458112513] {
cursor: pointer;
}
.logoLink[_ngcontent-ng-c2458112513] {
font-family: "Oxanium", sans-serif;
font-weight: 600;
font-size: 18px;
color: var(--ngrx-text);
display: flex;
flex-direction: row;
align-items: center;
gap: 12px;
}
.logoLink[_ngcontent-ng-c2458112513] img[_ngcontent-ng-c2458112513] {
width: 24px;
}
.sidebar-header[_ngcontent-ng-c2458112513] {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
[_nghost-ng-c2458112513] {
z-index: 2;
}
@media only screen and (max-width: 1280px) {
[_nghost-ng-c2458112513] {
z-index: 4;
}
}
[_nghost-ng-c2458112513] {
width: 270px;
height: 100lvh;
background-color: var(--ngrx-bg-surface);
overflow-y: scroll;
border-right: 1px solid var(--ngrx-border-color);
}
@media only screen and (max-width: 1280px) {
[_nghost-ng-c2458112513] {
border-right: none;
width: 0px;
padding: 0px;
}
}
.menu-link[_ngcontent-ng-c2458112513] {
display: flex;
flex-direction: row;
align-items: center;
gap: 12px;
text-decoration: none;
color: var(--ngrx-text-muted);
font-family: "Oxanium", sans-serif;
font-size: 14px;
transition: color 0.2s;
}
.menu-link[_ngcontent-ng-c2458112513] mat-icon[_ngcontent-ng-c2458112513] {
color: var(--ngrx-text-faint);
font-size: 20px;
transition: color 0.2s;
}
.menu-link[_ngcontent-ng-c2458112513]:hover,
.menu-link.active[_ngcontent-ng-c2458112513] {
color: var(--ngrx-text);
}
.menu-link[_ngcontent-ng-c2458112513]:hover mat-icon[_ngcontent-ng-c2458112513],
.menu-link.active[_ngcontent-ng-c2458112513] mat-icon[_ngcontent-ng-c2458112513] {
color: var(--ngrx-accent);
}
hr[_ngcontent-ng-c2458112513] {
border: none;
border-top: 1px solid var(--ngrx-border-color);
width: 100%;
}
.guideHeader[_ngcontent-ng-c2458112513] {
display: block;
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
padding: 0 0 0 8px;
margin: -8px;
color: var(--ngrx-text-muted);
}</style><style ng-app-id="ng">[_nghost-ng-c1455488321] {
display: grid;
grid-template-columns: 280px 1fr 1fr 1fr;
gap: 32px;
padding: 32px;
border-top: 1px solid var(--ngrx-border-color);
}
@media only screen and (max-width: 1280px) {
[_nghost-ng-c1455488321] {
grid-template-columns: repeat(2, 1fr);
}
}
img[_ngcontent-ng-c1455488321] {
width: 80px;
height: auto;
}
span[_ngcontent-ng-c1455488321] {
opacity: 0.64;
}
.logo-and-copyright[_ngcontent-ng-c1455488321],
nav[_ngcontent-ng-c1455488321] {
display: flex;
flex-direction: column;
gap: 16px;
}</style><style ng-app-id="ng">mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}
</style><style ng-app-id="ng">.version-toggle-btn[_ngcontent-ng-c4262930668] {
width: 100%;
padding: 0.5rem 1rem;
background-color: var(--ngrx-bg-elevated);
color: var(--ngrx-text-faint);
border: none;
cursor: pointer;
font-size: 0.9rem;
transition: background-color 0.2s ease;
display: flex;
justify-content: space-between;
align-items: center;
}
.arrow-icon[_ngcontent-ng-c4262930668] {
display: inline-block;
transition: transform 0.3s ease;
font-size: 0.6rem;
}
.arrow-icon.rotated[_ngcontent-ng-c4262930668] {
transform: rotate(180deg);
}
.version-toggle-btn[_ngcontent-ng-c4262930668]:hover {
background-color: var(--ngrx-bg-elevated-hover);
}
.version-list[_ngcontent-ng-c4262930668] {
background-color: var(--ngrx-bg-overlay);
}
.version-list.hidden[_ngcontent-ng-c4262930668] {
display: none;
}
.version-list[_ngcontent-ng-c4262930668] ul[_ngcontent-ng-c4262930668] {
list-style: none;
padding: 0;
margin: 0;
}
.version-list[_ngcontent-ng-c4262930668] li[_ngcontent-ng-c4262930668] {
border-bottom: 1px solid var(--ngrx-bg);
font-size: 0.9rem;
}
.version-list[_ngcontent-ng-c4262930668] li[_ngcontent-ng-c4262930668]:last-child {
border-bottom: none;
}
.version-list[_ngcontent-ng-c4262930668] a[_ngcontent-ng-c4262930668] {
display: block;
padding: 0.25rem 1rem;
text-decoration: none;
color: var(--ngrx-text-faint);
transition: background-color 0.2s ease;
}
.version-list[_ngcontent-ng-c4262930668] a[_ngcontent-ng-c4262930668]:hover {
background-color: var(--ngrx-bg-elevated-hover);
}</style><style ng-app-id="ng">.section-content[_ngcontent-ng-c2052653824] {
display: flex;
flex-direction: column;
gap: 4px;
margin-bottom: 3px;
}
.collapsible[_nghost-ng-c2052653824] .section-content[_ngcontent-ng-c2052653824] {
border-left: 1px solid var(--ngrx-border-color);
padding: 4px 16px;
margin-left: 12px;
}
.open[_nghost-ng-c2052653824] > section[_ngcontent-ng-c2052653824] > header[_ngcontent-ng-c2052653824] mat-icon[_ngcontent-ng-c2052653824] {
transform: rotate(90deg);
}
.hasActiveUrl[_nghost-ng-c2052653824] > section[_ngcontent-ng-c2052653824] > .section-content[_ngcontent-ng-c2052653824] {
border-color: var(--ngrx-active-border);
}
section[_ngcontent-ng-c2052653824] header[_ngcontent-ng-c2052653824] button[_ngcontent-ng-c2052653824] {
font-family: "Oxanium", sans-serif;
font-weight: 600;
margin: 6px 0 3px;
font-size: 16px;
display: flex;
gap: 4px;
align-items: center;
padding: 0;
outline: none;
border: none;
background: none;
color: var(--ngrx-text-secondary);
cursor: pointer;
}
.hasActiveUrl[_nghost-ng-c2052653824] > section[_ngcontent-ng-c2052653824] > header[_ngcontent-ng-c2052653824] > button[_ngcontent-ng-c2052653824] {
color: var(--ngrx-accent, #cf8fc5);
}
section[_ngcontent-ng-c2052653824] header[_ngcontent-ng-c2052653824] mat-icon[_ngcontent-ng-c2052653824] {
opacity: 0.56;
position: relative;
top: -2px;
}
section [_nghost-ng-c2052653824] {
display: flex;
flex-direction: column;
}
section [_nghost-ng-c2052653824] header[_ngcontent-ng-c2052653824] button[_ngcontent-ng-c2052653824] {
font-size: 14px;
}
hr[_ngcontent-ng-c2052653824] {
border: none;
border-top: 1px solid var(--ngrx-border-color);
margin: 16px 0;
width: 100%;
}</style><style ng-app-id="ng">.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}
</style><style ng-app-id="ng">@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}
</style><style ng-app-id="ng">.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus::before{content:""}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}
</style><style ng-app-id="ng">[_nghost-ng-c3095232775] {
display: block;
position: relative;
}
@media only screen and (max-width: 1280px) {
[_nghost-ng-c3095232775] {
z-index: 1;
}
}
.banner[_ngcontent-ng-c3095232775] {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100lvh;
border-bottom: 1px solid var(--ngrx-border-color);
position: relative;
}
img[_ngcontent-ng-c3095232775] {
margin-bottom: 16px;
}
h1[_ngcontent-ng-c3095232775] {
font-weight: 200;
font-size: 32px;
font-family: "Oxanium", sans-serif;
margin-bottom: 24px;
text-align: center;
}
.cta-container[_ngcontent-ng-c3095232775] {
display: flex;
gap: 2rem;
justify-content: center;
flex-wrap: wrap;
}
.cta[_ngcontent-ng-c3095232775] {
font-size: 1.1rem;
padding: 1.5rem 2rem;
}
ngrx-banner-animation[_ngcontent-ng-c3095232775] {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
}
img[_ngcontent-ng-c3095232775],
h1[_ngcontent-ng-c3095232775],
button[_ngcontent-ng-c3095232775] {
z-index: 1;
}
.content[_ngcontent-ng-c3095232775] {
display: grid;
width: 100%;
grid-template-columns: repeat(2, minmax(0, 500px));
justify-content: center;
gap: 24px;
padding: 32px 32px;
}
@media only screen and (max-width: 1280px) {
.content[_ngcontent-ng-c3095232775] {
grid-template-columns: 1fr;
}
}
ngrx-styled-box[_ngcontent-ng-c3095232775] {
display: grid;
grid-template-rows: 40px 24px 1fr 40px;
gap: 8px;
padding: 24px;
}
ngrx-styled-box[_ngcontent-ng-c3095232775] mat-icon[_ngcontent-ng-c3095232775] {
color: var(--ngrx-accent);
font-size: 32px;
}
ngrx-styled-box[_ngcontent-ng-c3095232775] h3[_ngcontent-ng-c3095232775] {
font-weight: 500;
font-family: "Oxanium", sans-serif;
}
ngrx-styled-box[_ngcontent-ng-c3095232775] p[_ngcontent-ng-c3095232775] {
padding-bottom: 16px;
color: var(--ngrx-text-secondary);
}
ngrx-styled-box[_ngcontent-ng-c3095232775] button[_ngcontent-ng-c3095232775] {
width: max-content;
}</style><style ng-app-id="ng">.mat-mdc-button-base{text-decoration:none}.mat-mdc-button-base .mat-icon{min-height:fit-content;flex-shrink:0}@media(hover: none){.mat-mdc-button-base:hover>span.mat-mdc-button-persistent-ripple::before{opacity:0}}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-button-text-horizontal-padding, 12px);height:var(--mat-button-text-container-height, 40px);font-family:var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-text-label-text-transform);font-weight:var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mat-button-text-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mat-button-text-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-button-text-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-text-touch-target-size, 48px);display:var(--mat-button-text-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-filled-container-height, 40px);font-family:var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-filled-label-text-transform);font-weight:var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-filled-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-filled-touch-target-size, 48px);display:var(--mat-button-filled-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary));background-color:var(--mat-button-filled-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mat-button-filled-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1));height:var(--mat-button-protected-container-height, 40px);font-family:var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-protected-label-text-transform);font-weight:var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-protected-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-protected-touch-target-size, 48px);display:var(--mat-button-protected-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-raised-button:not(:disabled){color:var(--mat-button-protected-label-text-color, var(--mat-sys-primary));background-color:var(--mat-button-protected-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mat-button-protected-container-shape, var(--mat-sys-corner-full))}@media(hover: hover){.mat-mdc-raised-button:hover{box-shadow:var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2))}}.mat-mdc-raised-button:focus{box-shadow:var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-outlined-container-height, 40px);font-family:var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-outlined-label-text-transform);font-weight:var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full));border-width:var(--mat-button-outlined-outline-width, 1px);padding:0 var(--mat-button-outlined-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-outlined-touch-target-size, 48px);display:var(--mat-button-outlined-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-outlined-button:not(:disabled){color:var(--mat-button-outlined-label-text-color, var(--mat-sys-primary));border-color:var(--mat-button-outlined-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-tonal-container-height, 40px);font-family:var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-tonal-label-text-transform);font-weight:var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-tonal-horizontal-padding, 24px)}.mat-tonal-button:not(:disabled){color:var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container))}.mat-tonal-button,.mat-tonal-button .mdc-button__ripple{border-radius:var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full))}.mat-tonal-button[disabled],.mat-tonal-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-tonal-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}[dir=rtl] .mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}.mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}[dir=rtl] .mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}.mat-tonal-button .mat-ripple-element{background-color:var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-tonal-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-tonal-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-tonal-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-tonal-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-tonal-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-tonal-touch-target-size, 48px);display:var(--mat-button-tonal-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button,.mat-tonal-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon,.mat-tonal-button .mdc-button__label,.mat-tonal-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator,.mat-tonal-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-button:focus>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus>.mat-focus-indicator::before,.mat-mdc-raised-button:focus>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus>.mat-focus-indicator::before,.mat-tonal-button:focus>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable,.mat-tonal-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon,.mat-tonal-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-tonal-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}
</style><style ng-app-id="ng">[_nghost-ng-c1925488454] {
display: block;
--background-blur-shapes-rotation: 27deg;
border-radius: 32px;
overflow: hidden;
border: 1px solid var(--ngrx-border-color);
position: relative;
}
svg[_ngcontent-ng-c1925488454] {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.backgroundBlurShapes[_ngcontent-ng-c1925488454] {
transform: rotate(var(--background-blur-shapes-rotation));
transform-origin: center;
}</style></head>
<body class="mat-typography mat-app-background"><!--nghm-->
<ngrx-root ng-version="21.0.1" _nghost-ng-c1775166289="" class="" ngh="9" ng-server-context="ssr-analog"><!----><ngrx-menu _ngcontent-ng-c1775166289="" _nghost-ng-c2458112513="" ngh="6"><div _ngcontent-ng-c2458112513="" class="mobile-nav-bar"><button _ngcontent-ng-c2458112513="" class="menu-toggle"><img _ngcontent-ng-c2458112513="" src="/ngrx-logo-pink.svg" alt="ngrx logo"><mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">menu</mat-icon></button></div><nav _ngcontent-ng-c2458112513="" class="sidebar"><button _ngcontent-ng-c2458112513="" class="close-menu"><mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate close-menu-icon material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">close</mat-icon></button><div _ngcontent-ng-c2458112513="" class="sidebar-header"><a _ngcontent-ng-c2458112513="" routerlink="" class="logoLink" href="/"><img _ngcontent-ng-c2458112513="" src="/ngrx-logo-pink.svg" alt="ngrx logo"> NgRx </a><ngrx-theme-toggle _ngcontent-ng-c2458112513="" ngh="2"><button mat-icon-button="" type="button" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-centered="" title="Switch to light mode" ngh="1"><span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple"></span><mat-icon role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0"> light_mode </mat-icon><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></button></ngrx-theme-toggle></div><ngrx-version-navigation _ngcontent-ng-c2458112513="" _nghost-ng-c4262930668="" ngh="3"><div _ngcontent-ng-c4262930668="" class="version-navigation"><button _ngcontent-ng-c4262930668="" type="button" class="version-toggle-btn"><span _ngcontent-ng-c4262930668="">v21</span><span _ngcontent-ng-c4262930668="" class="arrow-icon">▼</span></button><div _ngcontent-ng-c4262930668="" class="version-list hidden"><ul _ngcontent-ng-c4262930668=""><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v20.ngrx.io"> v20 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v19.ngrx.io"> v19 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v18.ngrx.io"> v18 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v17.ngrx.io"> v17 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v16.ngrx.io"> v16 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v15.ngrx.io"> v15 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v14.ngrx.io"> v14 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v13.ngrx.io"> v13 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v12.ngrx.io"> v12 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v11.ngrx.io"> v11 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v10.ngrx.io"> v10 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v9.ngrx.io"> v9 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v8.ngrx.io"> v8 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://v7.ngrx.io"> v7 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://github.com/ngrx/platform/tree/6.1.2/docs"> v6 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://github.com/ngrx/platform/tree/v5.2.0/docs"> v5 </a></li><li _ngcontent-ng-c4262930668=""><a _ngcontent-ng-c4262930668="" href="https://github.com/ngrx/platform/tree/v4.1.1/docs"> v4 </a></li><!----></ul></div></div><!----></ngrx-version-navigation><hr _ngcontent-ng-c2458112513=""><a _ngcontent-ng-c2458112513="" routerlink="/api" routerlinkactive="active" class="menu-link" href="/api"><mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">description</mat-icon> API Reference </a><a _ngcontent-ng-c2458112513="" routerlink="/workshops" routerlinkactive="active" class="menu-link" href="/workshops"><mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">co_present</mat-icon> Workshops </a><a _ngcontent-ng-c2458112513="" href="https://github.com/sponsors/ngrx" target="_blank" class="menu-link"><mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">volunteer_activism</mat-icon> Sponsor </a><a _ngcontent-ng-c2458112513="" href="https://github.com/ngrx/platform" target="__blank" class="menu-link"><mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">code</mat-icon> GitHub </a><hr _ngcontent-ng-c2458112513=""><span _ngcontent-ng-c2458112513="" class="guideHeader">Guide</span><ngrx-guide-section _ngcontent-ng-c2458112513="" _nghost-ng-c2052653824="" class="" ngh="5"><section _ngcontent-ng-c2052653824=""><!----><div _ngcontent-ng-c2052653824="" class="section-content"><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Store</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Effects</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Signals</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Entity</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Router Store</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Operators</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">More Packages</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><hr _ngcontent-ng-c2052653824=""><!----><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Schematics</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">ESLint Plugin</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----><hr _ngcontent-ng-c2052653824=""><!----><!----><!----><!----><ngrx-guide-section _ngcontent-ng-c2052653824="" _nghost-ng-c2052653824="" class="collapsible" ngh="4"><section _ngcontent-ng-c2052653824=""><header _ngcontent-ng-c2052653824=""><button _ngcontent-ng-c2052653824=""><mat-icon _ngcontent-ng-c2052653824="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">chevron_right</mat-icon><span _ngcontent-ng-c2052653824="">Developer Resources</span></button></header><!----><!----></section></ngrx-guide-section><!----><!----></div><!----></section></ngrx-guide-section></nav></ngrx-menu><div _ngcontent-ng-c1775166289="" class="content"><router-outlet _ngcontent-ng-c1775166289=""></router-outlet><ngrx-home-page _nghost-ng-c3095232775="" ngh="8"><div _ngcontent-ng-c3095232775="" class="banner"><ngrx-banner-animation _ngcontent-ng-c3095232775="" ngh="0"><svg fill="none" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1832 1000"><g filter="url(#filter0_f_232_269)" transform="translate(0 40)"><path d="M2436.88 841.563L2265.72 840.245L2091.19 739.48L2040.92 646.956L2096.35 614.956L1921.82 514.191L1866.39 546.191L1622.05 405.12L1240.21 504.661L821.333 262.825L938.317 74.3662L833.599 13.9072L861.312 -2.09285L686.782 -102.858L659.069 -86.8579L554.351 -147.317L623.103 -267.623L310.681 -450M2293.99 924.063L2241.08 893.519L2145.39 866.268L2040.67 805.809L1992.69 715.109L1853.07 634.497L1700.12 642.191L1665.21 622.038L1623.11 565.732L1518.39 505.273L1212.49 520.661L793.62 278.825L764.847 134.213L729.941 114.06L666.262 -50.7049L491.732 -151.47L359.301 -195.929L254.583 -256.388L198.097 -385M2168.28 976.486L2043.04 968.18L1973.23 927.874L1890.99 815.392L1752.46 735.41L1650.7 711.659L1442.45 589.426L1184.78 536.661L765.907 294.825L688.902 218.366L584.184 157.907L625.223 53.6011L590.317 33.4481L562.604 49.4481L492.792 9.14213L520.505 -6.85788L401.4 -139.623L261.776 -220.235L31.8203 -289M2029.72 1056.49L2022.52 1020.33L1917.81 959.874L1757.66 931.415L1583.13 830.65L1610.85 814.65L1471.22 734.038L1464.03 697.885L1429.12 677.732L1157.07 552.661L738.194 310.825L528.758 189.907L416.847 93.2951L381.941 73.1421L395.267 -15.1639L290.549 -75.6229L227.93 -79.7759L193.024 -99.9289L178.638 -172.235L-51.3181 -241M1891.15 1136.49L1856.25 1116.33L1849.05 1080.18L1639.62 959.262L1597.52 902.956L1527.71 862.65L1548.23 810.497L1443.51 750.038L1345.98 725.732L1129.35 568.661L710.482 326.825L543.145 262.213L438.426 201.754L431.233 165.601L326.515 105.142L312.129 32.8361L277.223 12.6831L124.272 20.3771L-15.352 -60.235L-79.0309 -225M1808.01 1184.49L1703.3 1124.03L1605.77 1099.72L1431.24 998.956L1451.76 946.803L1347.04 886.344L1374.76 870.344L1332.66 814.038L1193.03 733.426L1101.64 584.661L682.769 342.825L515.432 278.213L480.526 258.06L417.907 253.907L383.001 233.754L333.708 141.295L298.802 121.142L166.371 76.6831L-8.15873 -24.0819L-168.303 -52.5409L-112.877 -84.541L-182.689 -124.847L-356.159 -65M1617.83 1296.18L1629.2 1207.75L1524.48 1147.29L1458.27 1142.06L1355.73 1082.86L1328.02 1098.86L1295.84 1080.28L1391.76 943.66L1320.31 902.409L1255.94 896.747L1047.28 777.273L1073.93 600.661L655.056 358.825C653.747 358.069 612.765 355.742 592.437 354.672L452.813 274.06L230.05 241.448L195.144 221.295L173.565 112.836L33.9405 32.2241L-321.253 -44.8469L-376.679 -12.8469L-411.585 -33M1503.17 1360.49L1488.79 1288.18L1279.35 1167.26L1334.78 1135.26L1090.43 994.191L971.33 861.426L901.518 821.12L1046.22 616.661L627.343 374.825L564.724 370.672L425.1 290.06L369.674 322.06L154.105 325.601L84.293 285.295L153.045 164.989L-56.3912 44.0711L-146.723 55.9181L-522.436 31.0001" stroke="url(#paint0_radial_232_269)" stroke-opacity="0.72" stroke-width="4"></path></g><path d="M2436.88 881.563 L2265.72 880.245 L2091.19 779.48 L2040.92 686.956 L2096.35 654.956 L1921.82 554.191 L1866.39 586.191 L1622.05 445.12 L1240.21 544.661 L821.333 302.825 L938.317 114.366 L833.599 53.9072 L861.312 37.9072 L686.782 -62.8579 L659.069 -46.8579 L554.351 -107.31 L623.103 -227.623 L310.681 -410 M2293.99 964.063 L2241.08 933.519 L2145.39 906.268 L2040.67 845.809 L1992.69 755.109 L1853.07 674.497 L1700.12 682.191 L1665.21 662.038 L1623.11 605.732 L1518.39 545.273 L1212.49 560.661 L793.62 318.825 L764.847 174.213 L729.941 154.06 L666.262 -10.7049 L491.732 -111.47 L359.301 -155.929 L254.583 -216.388 L198.097 -345 M2168.28 1016.49 L2043.04 1008.18 L1973.23 967.874 L1890.99 855.392 L1752.46 775.41 L1650.7 751.659 L1442.45 629.426 L1184.78 576.661 L765.907 334.825 L688.902 258.366 L584.184 197.907 L625.223 93.6011 L590.317 73.4481 L562.604 89.4481 L492.792 49.1421 L520.505 33.1421 L401.4 -99.6229 L261.776 -180.235 L31.8203 -249 M2029.72 1096.49 L2022.52 1060.33 L1917.81 999.874 L1757.66 971.415 L1583.13 870.65 L1610.85 854.65 L1471.22 774.038 L1464.03 737.885 L1429.12 717.732 L1157.07 592.661 L738.194 350.825 L528.758 229.907 L416.847 133.295 L381.941 113.142 L395.267 24.8361 L290.549 -35.6229 L227.93 -39.7759 L193.024 -59.9289 L178.638 -132.235 L-51.3181 -201 M1891.15 1176.49 L1856.25 1156.33 L1849.05 1120.18 L1639.62 999.262 L1597.52 942.956 L1527.71 902.65 L1548.23 850.497 L1443.51 790.038 L1345.98 765.732 L1129.35 608.661 L710.482 366.825 L543.145 302.213 L438.426 241.754 L431.233 205.601 L326.515 145.142 L312.129 72.8361 L277.223 52.6831 L124.272 60.3771 L-15.352 -20.235 L-79.0309 -185 M1808.01 1224.49 L1703.3 1164.03 L1605.77 1139.72 L1431.24 1038.96 L1451.76 986.803 L1347.04 926.344 L1374.76 910.344 L1332.66 854.038 L1193.03 773.426 L1101.64 624.661 L682.769 382.825 L515.432 318.213 L480.526 298.06 L417.907 293.907 L383.001 273.754 L333.708 181.295 L298.802 161.142 L166.371 116.683 L-8.15873 15.9181 L-168.303 -12.5409 L-112.877 -44.541 L-182.689 -84.847 L-356.159 -25 M1617.83 1336.18 L1629.2 1247.75 L1524.48 1187.29 L1458.27 1182.06 L1355.73 1122.86 L1328.02 1138.86 L1295.84 1120.28 L1391.76 983.66 L1320.31 942.409 L1255.94 936.747 L1047.28 817.273 L1073.93 640.661 L655.056 398.825 C653.747 398.069 612.765 395.742 592.437 394.672 L452.813 314.06 L230.05 281.448 L195.144 261.295 L173.565 152.836 L33.9405 72.2241 L-321.253 -4.84695 L-376.679 27.1531 L-411.585 7.00005 M1503.17 1400.49 L1488.79 1328.18 L1279.35 1207.26 L1334.78 1175.26 L1090.43 1034.19 L971.33 901.426 L901.518 861.12 L1046.22 656.661 L627.343 414.825 L564.724 410.672 L425.1 330.06 L369.674 362.06 L154.105 365.601 L84.293 325.29 L153.045 204.989 L-56.3912 84.0711 L-146.723 95.9181 L-522.436 71.0001" stroke="url(#lineGradient)"></path><g><path d="M686.782 -62.8579 L861.312 37.9072 L833.599 53.9072 L938.317 114.366 L821.333 302.825"></path><path d="M821.333 302.825 L1240.21 544.661"></path><path d="M1240.21 544.661 L1622.05 445.12 L1866.39 586.191"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="821.333" cy="302.825" r="3"></circle></g><g><path d="M666.262 -10.7049 L729.941 154.06 L764.847 174.213 L793.62 318.825"></path><path d="M793.62 318.825 L1212.49 560.661"></path><path d="M1212.49 560.661 L1518.39 545.273 L1623.11 605.732 L1665.21 662.038 L1700.12 682.191 L1853.07 674.497 L2293.99 964.063"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="729.941" cy="154.06" r="3"></circle></g><g><path d="M401.4 -99.6229 L520.505 33.1421 L492.792 49.1421 L562.604 89.4481 L590.317 73.4481 L625.223 93.6011 L584.184 197.907 L688.902 258.366 L765.907 334.825"></path><path d="M765.907 334.825 L1184.78 576.661"></path><path d="M1184.78 576.661 L1442.45 629.426 L1650.7 751.659 L1752.46 775.41 L1890.99 855.392"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="520.505" cy="33.1421" r="3"></circle></g><g><path d="M290.549 -35.6229 L395.267 24.8361 L381.941 113.142 L416.847 133.295 L528.758 229.907 L738.194 350.825"></path><path d="M738.194 350.825 L1157.07 592.661"></path><path d="M1157.07 592.661 L1429.12 717.732 L1464.03 737.885 L1471.22 774.038 L1610.85 854.65 L1583.13 870.65 L1757.66 971.415 L1917.81 999.874"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="395.267" cy="24.8361" r="3"></circle></g><g><path d="M-15.352 -20.235 L124.272 60.3771 L277.223 52.6831 L312.129 72.8361 L326.515 145.142 L431.233 205.601 L438.426 241.754 L543.145 302.213 L710.482 366.825"></path><path d="M710.482 366.825 L1129.35 608.661"></path><path d="M1129.35 608.661 L1345.98 765.732 L1443.51 790.038 L1548.23 850.497 L1527.71 902.65 L1597.52 942.956 L1639.62 999.262 L1849.05 1120.18"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="1129.35" cy="608.661" r="3"></circle></g><g><path d="M-8.15873 15.9181 L166.371 116.683 L298.802 161.142 L333.708 181.295 L383.001 273.754 L417.907 293.907 L480.526 298.06 L515.432 318.213 L682.769 382.825"></path><path d="M682.769 382.825 L1101.64 624.661"></path><path d="M1101.64 624.661 L1193.03 773.426 L1332.66 854.038 L1374.76 910.344 L1347.04 926.344 L1451.76 986.803 L1431.24 1038.96 L1605.77 1139.72"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="166.371" cy="116.683" r="3"></circle></g><g><path d="M-321.253 -4.84695 L33.9405 72.2241 L173.565 152.836 L195.144 261.295 L230.05 281.448 L452.813 314.06 L592.437 394.672 C612.765 395.742 653.747 398.069 655.056 398.825"></path><path d="M655.056 398.825 L1073.93 640.661"></path><path d="M1073.93 640.661 L1047.28 817.273 L1255.94 936.747 L1320.31 942.409 L1391.76 983.66 L1295.84 1120.28"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="1073.93" cy="640.661" r="3"></circle></g><g><path d="M-56.3912 84.0711 L153.045 204.989 L84.293 325.29 L154.105 365.601 L369.674 362.06 L425.1 330.06 L564.724 410.672 L627.343 414.825"></path><path d="M627.343 414.825 L1046.22 656.661"></path><path d="M1046.22 656.661 L901.518 861.12 L971.33 901.426 L1090.43 1034.19 L1334.78 1175.26"></path><ellipse cx="821.333" cy="302.825" rx="3" ry="6" filter="url(#ellipseFilter)"></ellipse><circle cx="153.045" cy="204.989" r="3"></circle></g><defs><radialGradient id="lineGradient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(915.654 500.281) rotate(33.9338) scale(1416.97 2755.16)"><stop stop-color="#B1219B" stop-opacity="0.24"></stop><stop offset="0.385" stop-color="#8A1A79" stop-opacity="0.48"></stop><stop offset="1" stop-color="#FB9C2D"></stop></radialGradient><filter id="ellipseFilter" x="-30px" y="-30px" width="60px" height="60px" xmlns="http://www.w3.org/2000/svg"><feGaussianBlur in="SourceGraphic" stdDeviation="6"></feGaussianBlur></filter><filter id="filter0_f_232_269" x="-570.715" y="-498.995" width="3055.63" height="1907.64" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur stdDeviation="24" result="effect1_foregroundBlur_232_269"></feGaussianBlur></filter><radialGradient id="paint0_radial_232_269" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(915.654 460.281) rotate(33.9338) scale(1416.97 2755.16)"><stop stop-color="#B1219B" stop-opacity="0"></stop><stop offset="0.385" stop-color="#8A1A79" stop-opacity="0.3"></stop><stop offset="1" stop-color="#FB9C2D"></stop></radialGradient></defs></svg></ngrx-banner-animation><img _ngcontent-ng-c3095232775="" src="/ngrx-logo.svg" alt="ngrx logo" width="260"><h1 _ngcontent-ng-c3095232775="" class="mat-display-large">Reactive State for Angular</h1><div _ngcontent-ng-c3095232775="" class="cta-container"><a _ngcontent-ng-c3095232775="" routerlink="/guide/store/walkthrough" mat-flat-button="" class="mdc-button mat-mdc-button-base cta mdc-button--unelevated mat-mdc-unelevated-button mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized="" mat-ripple-loader-class-name="mat-mdc-button-ripple" href="/guide/store/walkthrough" ngh="7"><span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn Global Store</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></a><a _ngcontent-ng-c3095232775="" routerlink="/guide/signals/signal-store" mat-flat-button="" class="mdc-button mat-mdc-button-base cta mdc-button--unelevated mat-mdc-unelevated-button mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized="" mat-ripple-loader-class-name="mat-mdc-button-ripple" href="/guide/signals/signal-store" ngh="7"><span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn SignalStore</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></a></div></div><div _ngcontent-ng-c3095232775="" class="content"><ngrx-styled-box _ngcontent-ng-c3095232775="" _nghost-ng-c1925488454="" style="--background-blur-shapes-rotation: 176deg;" ngh="0"><svg _ngcontent-ng-c1925488454="" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0"><rect _ngcontent-ng-c1925488454="" fill="white" fill-opacity="0.04" width="0" height="0"></rect><ellipse _ngcontent-ng-c1925488454="" cx="285.5" cy="207" rx="114.5" ry="47" filter="url(#styledBoxEllipseBlur)" fill="url(#styledBoxEllipseGradient)" class="backgroundBlurShapes"></ellipse><path _ngcontent-ng-c1925488454="" d="M90.4445 99.6809C79.1814 108.189 54.1311 204.578 17.3753 130.24C-19.3804 55.9033 63.3118 92.6761 91.3154 85.1726C119.319 77.669 135.912 69.9287 150.175 56.2242C164.438 42.5197 177.06 -48.3425 230.735 42.6908C284.409 133.724 163.166 63.7242 150.188 67.2014C137.211 70.6787 101.708 91.1726 90.4445 99.6809Z" filter="url(#styledBoxBlobBlur)" fill="#FB9C2D" class="backgroundBlurShapes"></path><defs _ngcontent-ng-c1925488454=""><filter _ngcontent-ng-c1925488454="" id="styledBoxEllipseBlur" x="-77" y="-88" width="725" height="590" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood _ngcontent-ng-c1925488454="" flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend _ngcontent-ng-c1925488454="" mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur _ngcontent-ng-c1925488454="" stdDeviation="124"></feGaussianBlur></filter><filter _ngcontent-ng-c1925488454="" id="styledBoxBlobBlur" x="-239.881" y="-245.322" width="732.25" height="651.535" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood _ngcontent-ng-c1925488454="" flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend _ngcontent-ng-c1925488454="" mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur _ngcontent-ng-c1925488454="" stdDeviation="124"></feGaussianBlur></filter><linearGradient _ngcontent-ng-c1925488454="" id="styledBoxEllipseGradient" x1="285.5" y1="160" x2="285.5" y2="254" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1925488454="" stop-color="#B1219B"></stop><stop _ngcontent-ng-c1925488454="" offset="1" stop-color="#5306A1"></stop></linearGradient></defs></svg><mat-icon _ngcontent-ng-c3095232775="" role="img" inline="" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-inline mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">school</mat-icon><h3 _ngcontent-ng-c3095232775="">Learn</h3><p _ngcontent-ng-c3095232775=""> Dive into NgRx with our getting started guide. You will learn how to think reactively and architect your Angular apps for success. </p><a _ngcontent-ng-c3095232775="" routerlink="/guide/store/walkthrough" mat-flat-button="" class="mdc-button mat-mdc-button-base mdc-button--unelevated mat-mdc-unelevated-button mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized="" mat-ripple-loader-class-name="mat-mdc-button-ripple" href="/guide/store/walkthrough" ngh="7"><span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn Global Store</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></a><a _ngcontent-ng-c3095232775="" routerlink="/guide/signals/signal-store" mat-flat-button="" class="mdc-button mat-mdc-button-base mdc-button--unelevated mat-mdc-unelevated-button mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized="" mat-ripple-loader-class-name="mat-mdc-button-ripple" href="/guide/signals/signal-store" ngh="7"><span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn SignalStore</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></a></ngrx-styled-box><ngrx-styled-box _ngcontent-ng-c3095232775="" _nghost-ng-c1925488454="" style="--background-blur-shapes-rotation: 353deg;" ngh="0"><svg _ngcontent-ng-c1925488454="" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0"><rect _ngcontent-ng-c1925488454="" fill="white" fill-opacity="0.04" width="0" height="0"></rect><ellipse _ngcontent-ng-c1925488454="" cx="285.5" cy="207" rx="114.5" ry="47" filter="url(#styledBoxEllipseBlur)" fill="url(#styledBoxEllipseGradient)" class="backgroundBlurShapes"></ellipse><path _ngcontent-ng-c1925488454="" d="M90.4445 99.6809C79.1814 108.189 54.1311 204.578 17.3753 130.24C-19.3804 55.9033 63.3118 92.6761 91.3154 85.1726C119.319 77.669 135.912 69.9287 150.175 56.2242C164.438 42.5197 177.06 -48.3425 230.735 42.6908C284.409 133.724 163.166 63.7242 150.188 67.2014C137.211 70.6787 101.708 91.1726 90.4445 99.6809Z" filter="url(#styledBoxBlobBlur)" fill="#FB9C2D" class="backgroundBlurShapes"></path><defs _ngcontent-ng-c1925488454=""><filter _ngcontent-ng-c1925488454="" id="styledBoxEllipseBlur" x="-77" y="-88" width="725" height="590" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood _ngcontent-ng-c1925488454="" flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend _ngcontent-ng-c1925488454="" mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur _ngcontent-ng-c1925488454="" stdDeviation="124"></feGaussianBlur></filter><filter _ngcontent-ng-c1925488454="" id="styledBoxBlobBlur" x="-239.881" y="-245.322" width="732.25" height="651.535" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood _ngcontent-ng-c1925488454="" flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend _ngcontent-ng-c1925488454="" mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur _ngcontent-ng-c1925488454="" stdDeviation="124"></feGaussianBlur></filter><linearGradient _ngcontent-ng-c1925488454="" id="styledBoxEllipseGradient" x1="285.5" y1="160" x2="285.5" y2="254" gradientUnits="userSpaceOnUse"><stop _ngcontent-ng-c1925488454="" stop-color="#B1219B"></stop><stop _ngcontent-ng-c1925488454="" offset="1" stop-color="#5306A1"></stop></linearGradient></defs></svg><mat-icon _ngcontent-ng-c3095232775="" role="img" inline="" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-inline mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">volunteer_activism</mat-icon><h3 _ngcontent-ng-c3095232775="">Support the team</h3><p _ngcontent-ng-c3095232775="">Support the development of NgRx by sponsoring us.</p><a _ngcontent-ng-c3095232775="" href="https://github.com/sponsors/ngrx" target="_blank" mat-flat-button="" class="mdc-button mat-mdc-button-base mdc-button--unelevated mat-mdc-unelevated-button mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized="" mat-ripple-loader-class-name="mat-mdc-button-ripple" ngh="7"><span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Sponsor</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></a></ngrx-styled-box></div></ngrx-home-page><!----><ngrx-footer _ngcontent-ng-c1775166289="" _nghost-ng-c1455488321="" ngh="0"><div _ngcontent-ng-c1455488321="" class="logo-and-copyright"><a _ngcontent-ng-c1455488321="" routerlink="/" class="logo" href="/"><img _ngcontent-ng-c1455488321="" src="/ngrx-logo.svg" alt="NGRX Logo"></a><span _ngcontent-ng-c1455488321="">© 2026 NgRx</span><span _ngcontent-ng-c1455488321="">Released under the MIT License</span></div><nav _ngcontent-ng-c1455488321="" class="learn-ngrx"><h4 _ngcontent-ng-c1455488321="">Learn NgRx</h4><a _ngcontent-ng-c1455488321="" routerlink="/api" href="/api">API Reference</a><a _ngcontent-ng-c1455488321="" href="https://github.com/sponsors/ngrx" target="_blank">Sponsor</a><a _ngcontent-ng-c1455488321="" routerlink="/about" href="/about">About</a></nav><nav _ngcontent-ng-c1455488321="" class="packages"><h4 _ngcontent-ng-c1455488321="">Packages</h4><a _ngcontent-ng-c1455488321="" routerlink="/guide/store" href="/guide/store">Store</a><a _ngcontent-ng-c1455488321="" routerlink="/guide/effects" href="/guide/effects">Effects</a><a _ngcontent-ng-c1455488321="" routerlink="/guide/signals" href="/guide/signals">Signals</a><a _ngcontent-ng-c1455488321="" routerlink="/guide/operators" href="/guide/operators">Operators</a></nav><nav _ngcontent-ng-c1455488321="" class="community"><h4 _ngcontent-ng-c1455488321="">Community</h4><a _ngcontent-ng-c1455488321="" href="https://dev.to/ngrx" target="_blank">Blog</a><a _ngcontent-ng-c1455488321="" href="https://github.com/ngrx/platform" target="_blank">GitHub</a><a _ngcontent-ng-c1455488321="" href="https://x.com/ngrx_io" target="_blank">X/Twitter</a><a _ngcontent-ng-c1455488321="" href="https://discord.com/invite/ngrx" target="_blank">Discord</a></nav></ngrx-footer></div></ngrx-root>
<script id="ng-state" type="application/json">{"__nghData__":[{},{"n":{"2":"hfn2"}},{"n":{"1":"0fn","2":"1f"}},{"t":{"0":"t1"},"c":{"0":[{"i":"t1","r":1,"t":{"9":"t2"},"c":{"9":[{"i":"t2","r":1,"x":17}]}}]}},{"t":{"1":"t3","2":"t4"},"c":{"1":[{"i":"t3","r":1,"n":{"3":"2f"}}],"2":[]}},{"t":{"1":"t3","2":"t4"},"c":{"1":[],"2":[{"i":"t4","r":1,"t":{"2":"t5"},"c":{"2":[{"i":"t5","r":4,"t":{"0":"t6","1":"t7","2":"t8"},"c":{"0":[],"1":[],"2":[{"i":"t8","r":1}]},"x":7},{"i":"t5","r":4,"t":{"0":"t6","1":"t7","2":"t8"},"c":{"0":[],"1":[{"i":"t7","r":1}],"2":[]}},{"i":"t5","r":4,"t":{"0":"t6","1":"t7","2":"t8"},"c":{"0":[],"1":[],"2":[{"i":"t8","r":1}]},"x":2},{"i":"t5","r":4,"t":{"0":"t6","1":"t7","2":"t8"},"c":{"0":[],"1":[{"i":"t7","r":1}],"2":[]}},{"i":"t5","r":4,"t":{"0":"t6","1":"t7","2":"t8"},"c":{"0":[],"1":[],"2":[{"i":"t8","r":1}]}}]}}]}},{"n":{"5":"4f","10":"9f","20":"19f","24":"23f","28":"27f","32":"31f"}},{"n":{"2":"hfn","5":"hfn2"}},{"n":{"7":"6fnf","9":"8fnf","12":"11fn","13":"12f","19":"18fnf","21":"20fnf","23":"22fn","24":"23f","30":"29fnf"}},{"t":{"0":"t0"},"c":{"0":[],"3":[{"i":"c3095232775","r":1}]}}]}</script></body></html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 10
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 10 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
На странице присутствуют изображения 2.
Показать внутренние ссылки
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| /guide/store/walkthrough |
<span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn Global Store</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span>
|
|
Анализировать url |
| /guide/signals/signal-store |
<span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn SignalStore</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span>
|
|
Анализировать url |
| /guide/store/walkthrough |
<span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn Global Store</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span>
|
|
Анализировать url |
| /guide/signals/signal-store |
<span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Learn SignalStore</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span>
|
|
Анализировать url |
| /api |
API Reference
|
|
Анализировать url |
| /about |
About
|
|
Анализировать url |
| /guide/store |
Store
|
|
Анализировать url |
| /guide/effects |
Effects
|
|
Анализировать url |
| /guide/signals |
Signals
|
|
Анализировать url |
| /guide/operators |
Operators
|
|
Анализировать url |
Внешние ссылки
Кол-во: 11
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 11 слишком много. Спрячьте лишние ссылки в тег noindex или атрибут rel='nofollow'!
На странице присутствуют ссылки на субдомены 14.
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| github.com |
v6
|
Анализировать url |
| github.com |
v5
|
Анализировать url |
| github.com |
v4
|
Анализировать url |
| github.com |
<mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">volunteer_activism</mat-icon> Sponsor
|
Анализировать url |
| github.com |
<mat-icon _ngcontent-ng-c2458112513="" role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">code</mat-icon> GitHub
|
Анализировать url |
| github.com |
<span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><span class="mdc-button__label">Sponsor</span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span>
|
Анализировать url |
| github.com |
Sponsor
|
Анализировать url |
| dev.to |
Blog
|
Анализировать url |
| github.com |
GitHub
|
Анализировать url |
| x.com |
X/Twitter
|
Анализировать url |
| discord.com |
Discord
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Оптимизация сайта ngrx.io выполнена всего на 50%. Чтобы исправить ситуацию и попасть в ТОП необходимо:
Исправьте ошибки в мета-тегах.
Исправьте ошибки оптимизации.
Исправьте ошибки индексации.
Поделитесь с друзьями: