Rosnąca popularność nowoczesnych technik webowych stawia nowe wyzwania. Coraz więcej stron i aplikacji powstaje jako Single-Page Application (SPA) – dynamiczne aplikacje jednopodstronowe, zapewniające płynne doświadczenie użytkownika bez przeładowań.
Niestety, znane są przypadki, gdy nawet świetnie zaprojektowana strona SPA nie radziła sobie w wynikach organicznych Google. Dlaczego? Boty wyszukiwarek historycznie miały trudności z indeksacją treści generowanych JavaScriptem.
Tradycyjne Multi-Page Application (MPA) – klasyczne witryny wielostronicowe – z definicji serwują każdą podstronę jako oddzielny, statyczny dokument HTML, łatwy do przeczytania przez Googleboty. W SPA wiele treści ładuje się asynchronicznie po stronie klienta, przez co crawler może nie zobaczyć pełnej zawartości i pozycjonowanie takiej strony cierpi. Dla firm opierających biznes na ruchu z Google to poważny problem.
Dwójka polskich badaczy, Karolina Kowalczyk i Tomasz Szandała z Politechniki Wrocławskiej, postanowiła zmierzyć się z tym wyzwaniem. W opublikowanym w 2024 roku artykule naukowym (IEEE Access) przeanalizowali, jak można zwiększyć SEO w aplikacjach SPA tak, by dorównało tradycyjnym MPA. Wyniki ich eksperymentów okazały się na tyle obiecujące, że warto je przybliżyć praktykom SEO i deweloperom.
SEO w Single-Page Application
Optymalizacja pod wyszukiwarki to temat stary jak same wyszukiwarki – pierwsze techniki SEO pojawiły się już w latach 90. (choć wtedy mówiono raczej o SEM, marketingu w wyszukiwarkach). Przez lata zmieniło się niemal wszystko: algorytmy Google stały się niezwykle inteligentne, uwzględniają setki czynników rankingowych (treść, linki, PageRank, zachowanie użytkowników, YMYL i E-E-A-T, itp.), a internet zalała fala nowoczesnych technologii webowych.
Single-Page Applications zyskały popularność na początku XXI wieku, oferując doświadczenie bardziej przypominające aplikacje desktopowe czy mobilne – szybsze interakcje, brak przeładowań, płynność działania. Taki UX jest wysoko ceniony przez użytkowników, ale stanowił ból głowy dla SEO.
W tradycyjnych MPA każdy podstrona ma unikalny URL i statyczną treść, co daje naturalną przewagę SEO – boty łatwo indeksują całą zawartość. Z kolei w SPA bot może trafić na „pusty” dokument (bo treść doładuje się później skryptami), albo na jeden URL bez podziału na sekcje. Przez to ważne podstrony mogą pozostać niezaindeksowane lub niezrozumiane przez algorytm.
Co prawda Google i inne wyszukiwarki coraz lepiej radzą sobie z renderowaniem JavaScriptu, jednak nadal dynamiczne treści SPA mogą być częściowo pomijane, zwłaszcza w erze indeksowania mobile-first. Innymi słowy – jeśli strona jednopodstronowa nie zadba o przyjazność dla crawlerów, może ustępować pola mniej nowoczesnym, ale czytelnym dla bota konkurentom.
Na przestrzeni ostatnich lat pojawiły się różne próby zaradzenia temu problemowi. Jedną z pierwszych był tzw. prerendering – generowanie statycznych snapshotów stron SPA dla botów (np. poprzez usługę PhantomJS lub prerender.io). Innym podejściem stało się wykorzystanie Isomorphic JavaScript, czyli techniki SSR (Server-Side Rendering) w połączeniu z tradycyjnym CSR (Client-Side Rendering). Frameworki takie jak Next.js (dla React) czy Angular Universal pozwalają, by pierwsze załadowanie strony SPA odbyło się po stronie serwera – serwis wysyła gotowy HTML, a dopiero potem aplikacja działa dalej jako SPA. Dzięki temu użytkownik niewiele traci z interaktywności, a bot wyszukiwarki widzi treść od razu.

Mimo istnienia tych rozwiązań, do niedawna brakowało empirycznych badań potwierdzających ich skuteczność. Branża opierała się głównie na doświadczeniach praktyków i wytycznych Google. Kowalczyk i Szandała zwracają uwagę, że SEO w kontekście SPA to wciąż stosunkowo słabo zbadany obszar, zwłaszcza naukowo. Ich praca wnosi świeże spojrzenie, porównując bezpośrednio SPA i MPA oraz testując różne techniki optymalizacyjne.

Środowisko testowe SPA i MPA
Badacze podeszli do tematu bardzo praktycznie. Zamiast ograniczyć się do symulacji czy teorii, stworzyli trzy wersje tej samej aplikacji webowej – prostej aplikacji blogowej z funkcjami rejestracji, logowania i dodawania postów. Każda wersja używała innej technologii, reprezentując odmienny paradygmat:
- Wersja MPA. Klasyczna wielostronicowa aplikacja napisana we frameworku Flask (Python). Każda podstrona (lista wpisów, logowanie, dodawanie posta itp.) miała osobny szablon HTML generowany na serwerze.
- Wersja SPA. Nowoczesna aplikacja jednostronicowa stworzona w React (JavaScript), działająca w całości po stronie klienta (CSR). Po załadowaniu początkowego „szkieletu” strony dalsze treści doładowywały się dynamicznie.
- Wersja hybrydowa (isomorficzna). Aplikacja oparta o Next.js (framework Reacta wspierający SSR). Przy pierwszym wejściu strona renderowała się po stronie serwera (SSR) jako statyczny HTML, a następnie działała jak SPA po stronie klienta (treść była „nasycana” i dalsze interakcje nie wymagały przeładowań).
Wszystkie trzy aplikacje oferowały identyczną funkcjonalność i treść dla miarodajnego porównania. Badacze zadbali nawet o to, by design i układ stron był taki sam (skorzystali z jednego z szablonów Wix, dostosowując go do każdej wersji). Dzięki temu różnice w wynikach można było przypisać tylko technice wdrożenia i zastosowanym optymalizacjom, a nie innej zawartości czy wyglądowi.

Strony zostały opublikowane online (na platformie Heroku) pod trzema różnymi adresami URL, tak aby mogły zostać realnie przeanalizowane narzędziami SEO.
Kluczowym elementem metodologii było zastosowanie konkretnych technicznych usprawnień SEO w każdej wersji oraz porównanie stanu przed i po optymalizacji. O jakie usprawnienia chodzi? Lista przypomina checklistę technicznego SEO:
- Integracja SSR w SPA: W przypadku Next.js wykorzystano w pełni jego możliwości SSR/SSG – pierwsze renderowanie strony odbywało się na serwerze, generując od razu kompletny HTML dla botów. Dzięki temu nawet wersja SPA mogła serwować “pełną” treść na start (co zwykle robi MPA).
- Przyjazne URL-e dla SPA: Każdy widok aplikacji (np. strona główna bloga, formularz logowania, widok posta) otrzymał unikalny adres URL, zgodny z najlepszymi praktykami SEO. W React SPA zastosowano mechanizm client-side routing (React Router) tak, by zmiana podstron zmieniała też URL w przeglądarce – i aby dało się te adresy indeksować.
- Plik robots.txt: Utworzono plik robots.txt, by blokować indeksację technicznych podstron bez wartości dla SEO (logowanie, rejestracja, formularz dodawania postu, panel użytkownika). Cenne crawl budget ma iść na strony z treścią, nie na sekcje administracyjne.
- Optymalizacja obrazów: Wszystkie obrazki zostały zoptymalizowane – konwersja do nowoczesnego formatu WebP, ustawienie wymiarów, responsywne ładowanie różnych rozmiarów dla mobile/desktop. W Next.js skorzystano z wbudowanego komponentu <Image> usprawniającego te procesy, w React i Flask użyto atrybutów srcset/sizes. Pierwszy duży obraz na stronie głównej oznaczono jako priorytetowy, by przyspieszyć metrykę Largest Contentful Paint (LCP).
- Leniwe ładowanie komponentów: Zaimplementowano code splitting, czyli podział kodu na mniejsze paczki i leniwe dogrywanie (lazy load) mniej potrzebnych modułów tylko w razie potrzeby. Dzięki temu aplikacja nie wysyła od razu całego ciężkiego pliku JS, co skraca czas interaktywności. W React użyto funkcji React.lazy() i komponentu <Suspense> z animacją ładowania, a w Next.js analogicznie next/dynamic .
- Eliminacja zasobów blokujących renderowanie: Zidentyfikowano pliki CSS i JS, które mogły opóźniać renderowanie początkowej zawartości (np. fonty z Google, główne style, biblioteka Bootstrap w Flask). Krytyczne arkusze stylów i skrypty oznaczono do preload lub dodano im atrybut defer, by nie blokowały parsowania HTML. Dzięki temu przeglądarka wyświetla treść szybciej, a wskaźnik First Contentful Paint (FCP) ulega poprawie.
- Wymuszony HTTPS: Każda wersja została przygotowana do działania pod bezpiecznym protokołem HTTPS. Dodatkowo zadbano o automatyczne przekierowanie z ewentualnego http:// na https:// (w Flask użyto do tego rozszerzenia Flask Talisman, w React biblioteki react-https-redirect, a w Next – wbudowanych mechanizmów). Bezpieczny protokół to nie tylko wymóg np. dla sklepów (szyfrowanie danych), ale też sygnał rankingowy – Google promuje strony po SSL.
Przed wdrożeniem powyższych zmian każda z trzech aplikacji została przeanalizowana, aby stanowić punkt odniesienia (baseline). Następnie po zaimplementowaniu optymalizacji ponownie zebrano dane. Do pomiarów wykorzystano dwa podejścia:
- Audyt SEO on-page narzędziem Seobility – platformą analizującą stronę pod kątem technicznego SEO, jakości treści, struktury, meta tagów, linków, wydajności i wielu innych czynników. Seobility generuje procentowy SEO score oraz listę zadań do poprawy. Dzięki niemu oceniono ogólny stan SEO każdej wersji i zidentyfikowano ewentualne braki.
- Test wydajności i metryk Google PageSpeed Insights – darmowym narzędziem Google, które mierzy szybkość i wydajność strony zarówno dla urządzeń mobilnych, jak i desktop. PageSpeed raportuje kluczowe wskaźniki Core Web Vitals (m.in. FCP, Total Blocking Time (TBT), Speed Index (SI), LCP, Cumulative Layout Shift (CLS)) oraz własny uproszczony wynik SEO (sprawdzający podstawowe elementy jak obecność title, meta description, dostępność na urządzeniach mobilnych itp.). Pozwala to ocenić, na ile poprawiła się szybkość działania aplikacji – co istotne nie tylko dla użytkowników, ale i algorytmów (Google oficjalnie włączyło Core Web Vitals do czynników rankingowych).
Autorzy badania skupili się na on-page SEO i wydajności. Nie analizowano aspektów off-page (np. profilu linków zewnętrznych), zakładając że dla czystości eksperymentu wszystkie wersje startują bez linków i autorytetu domeny. Skupiono się za to na tym, co deweloper i spec od SEO mogą poprawić w samym kodzie i konfiguracji SPA, by uczynić ją jak najbardziej „przyjazną” wyszukiwarkom.
Wyniki eksperymentu SPA vs MPA
Najważniejsze wyniki eksperymentu okazały się bardzo zachęcające dla zwolenników nowoczesnych rozwiązań. Poniżej zebrano kluczowe liczby i obserwacje z badania, które obrazują wpływ optymalizacji na SEO i wydajność SPA w porównaniu z MPA.
- Szybsze wyświetlenie treści: Udało się znacząco skrócić czas pojawienia się pierwszych elementów strony. Po optymalizacji Reactowa SPA na desktopie osiągnęła First Contentful Paint poniżej 1 sekundy – wynik porównywalny z lekkimi stronami MPA.
- Zero blokowania renderu: We wszystkich trzech wersjach wyeliminowano problem blokujących skryptów – Total Blocking Time zredukowano do 0 ms (na desktop) już w początkowym widoku. Strony stały się interaktywne niemal natychmiast po załadowaniu.
- Poprawa największych elementów: Metryka Largest Contentful Paint uległa poprawie – w testach mobilnych najkrótszy czas LCP odnotowano dla hybrydowej wersji Next.js (framework SSR+CSR), co pokazuje siłę wstępnego renderowania na serwerze.
- Stabilny układ strony: Wszystkie wersje po zmianach osiągnęły CLS = 0 (żadne niezaplanowane przesunięcia układu nie występowały). To ważne zarówno dla UX, jak i sygnałów rankingowych – użytkownik nie doświadcza „skaczących” elementów, a Google ocenia stronę jako stabilną.
- Wynik PageSpeed (SEO): W narzędziu Google PageSpeed każda wersja po optymalizacji uzyskała 100% w kategorii SEO, co oznacza, że wszystkie podstawowe elementy (tytuły, meta tagi, mobilność, dostępność dla botów) zostały spełnione. Co więcej, PageSpeed Performance Score także znacząco wzrósł zarówno dla mobile, jak i desktop (na wykresach z raportu widać zielone wskaźniki zamiast czerwonych) – potwierdzając skok wydajności.
- Audyt Seobility (SEO score): Bardziej rygorystyczny audyt Seobility również wykazał poprawę we wszystkich obszarach. Ogólny wynik SEO zbliżył się do 70% (100% to wynik idealny), przy czym w kategoriach takich jak jakość strony (np. optymalizacja treści pod mobile, unikanie błędów) Next.js osiągnął aż 98%. Pewnych rzeczy nie udało się jednak przeskoczyć – na końcowy wynik 70% wpływ miały czynniki, których sama optymalizacja techniczna nie zmieniła. Seobility punktowało np. brak rozbudowanej sekcji danych strukturalnych, bardzo mało zewnętrznych linków prowadzących do strony czy ograniczoną ilość unikalnej treści (strona testowa była stosunkowo niewielka). Innymi słowy, technicznie SPA dorównała MPA, ale aby dobić do 100%, potrzebne byłyby jeszcze działania contentowe i off-site.
- Dostępność i UX: Przy okazji usprawnień SEO poprawiła się dostępność serwisu – wszystkie wersje osiągnęły ~97% w audycie dostępności (Accessibility) PageSpeed. Jedynym wskazaniem do poprawy był kontrast kolorów tekstu względem tła, co łatwo naprawić. To cenna korzyść uboczna, bo lepsza dostępność oznacza wygodniejsze korzystanie ze strony przez wszystkich użytkowników (w tym np. osoby niedowidzące), a pośrednio może wpływać na SEO, bo Google premiuje strony przyjazne użytkownikom.
Wyniki eksperymentu pokazują czarno na białym, że odpowiednio zoptymalizowana aplikacja SPA może osiągać porównywalne parametry SEO co tradycyjna strona MPA. Poprawa objęła zarówno twarde metryki wydajnościowe, jak i miękkie aspekty jakości strony.
Hybrydowa architektura (Next.js) okazała się skuteczna i przodowała w niektórych kategoriach – np. świetny wynik LCP i wysoka ocena jakości. To dowód na to, że nowoczesne frameworki dają realną przewagę, jeśli umiejętnie z nich skorzystać.
Warto podkreślić, że zmiany wprowadzone przez badaczy przyniosły także lepsze doświadczenie dla użytkownika końcowego. Strony ładowały się szybciej i były bardziej responsywne. A jak wiemy, użytkownicy nie lubią czekać – prawdopodobieństwo, że ktoś zrezygnuje i opuści witrynę na komórce wzrasta aż o 90%, gdy ładowanie wydłuża się z 1 do 5 sekund. Tutaj po optymalizacji czasy były zdecydowanie niższe, co zapowiada większe zaangażowanie odwiedzających i mniejszy współczynnik odrzuceń.
Jak pozycjonować strony SPA?
Co oznaczają te wyniki dla branży SEO i web dewelopmentu? Przede wszystkim obalają one mit, że „SPA nie nadają się do pozycjonowania”. Okazuje się, że można mieć nowoczesną, interaktywną aplikację jednostronicową i wysoką widoczność w Google – pod warunkiem spełnienia określonych wymogów.
Dla SEOwców to świetna wiadomość, bo nie trzeba odradzać klientom SPA ze strachu przed utratą ruchu z Google. Zamiast tego, można zaproponować konkretne rozwiązania technologiczne, które łączą świat UX i SEO.
Jeśli budujesz aplikację w stylu SPA (np. w React, Vue, Angular):
- Zaimplementuj Server-Side Rendering przynajmniej dla pierwszego załadowania strony (możesz użyć frameworków typu Next.js, Nuxt.js, Angular Universal). Dzięki temu boty zobaczą pełną treść od razu, a nie dopiero po wykonaniu JavaScriptu.
- Dopilnuj, aby aplikacja posiadała unikalne URL-e dla kluczowych widoków (użyj history API i routing-u po stronie klienta) i by możliwe było ich odświeżenie/wejście bezpośrednio. Każda istotna sekcja powinna być dostępna pod osobnym adresem jak w tradycyjnej stronie – to ułatwia indeksowanie i linkowanie wewnętrzne.
- Stosuj standardowe praktyki technicznego SEO: unikalny tytuł i meta description dla każdej „podstrony” SPA, tagi nagłówkowe <h1>…<h2> w kodzie generowanym przez JS, przyjazne adresy, mapę strony XML uwzględniającą wszystkie routy, przekierowanie HTTP→HTTPS, itd. To często drobiazgi, które razem składają się na lepszą ocenę witryny przez algorytmy.
- Dbaj o wydajność: optymalizuj obrazy, kompresuj i cachuj zasoby, usuwaj zbędny kod, ładuj skrypty i style asynchronicznie. Szybka strona to nie tylko zadowolony użytkownik, ale i plus w rankingu Google (Core Web Vitals). Wszelkie techniki jak lazy loading komponentów, preloading krytycznych zasobów, minimalizacja JS/CSS – to wszystko realnie wpływa na PageSpeed Score i pozycje.
- Testuj i monitoruj efekty: korzystaj z narzędzi takich jak Google PageSpeed Insights, Lighthouse, czy pełne audyty (Seobility, Screaming Frog, Sitebulb) regularnie. Pozwoli to wychwycić nowe problemy po zmianach. Ponadto monitorowanie pozycji słów kluczowych i ruchu (np. przez Google Search Console, Analytics, dedykowane trackery) wskaże, czy działania przynoszą oczekiwany wzrost widoczności.
Dla branży SEO wyniki tego badania mają jeszcze szerszy kontekst. Pokazują one, że techniczne SEO wciąż odgrywa ogromną rolę. Ostatnie lata to moda na content marketing, zdobywanie linków, optymalizację pod długi ogon czy nawet troskę o aspekty E-A-T/YMYL contentu – co oczywiście jest bardzo ważne.
Jednak ta publikacja przypomina, że bez solidnych fundamentów technicznych strona może nigdy nie wykorzystać pełni potencjału swoich treści. Innymi słowy, świetny content i linki (czyli paliwo dla PageRank) są na nic, jeśli Google nie „przeczyta” poprawnie strony albo użytkownik porzuci ją z powodu wolnego działania. Nowoczesne witryny muszą więc łączyć jedno z drugim, architekturę przyjazną SEO i wartościową zawartość.
Który framework JS jest najlepszy?
Wyniki testu rodzą kilka ciekawych pytań i tematów do przemyślenia. Po pierwsze, czy to oznacza, że SPA dorównały MPA na każdym polu? Technicznie – jak pokazano – mogą dorównać, a nawet prześcignąć (np. lepszy LCP w Next.js niż w Flask dla mobile). Trzeba jednak zauważyć, że osiągnięcie tego poziomu wymaga dodatkowego wysiłku. W przypadku SPA nierzadko potrzebna jest gruntowna przebudowa struktury projektu i głębsza analiza architektury renderowania po stronie klienta i serwera Innymi słowy, „pudełkowe” SPA prosto z tutoriala nie będzie SEO-friendly – trzeba świadomie wdrożyć opisane rozwiązania. Dla porównania, tradycyjna MPA z reguły „z pudełka” już jest dość przyjazna wyszukiwarce. Zatem wybierając SPA, musimy liczyć się z większym nakładem pracy (lub użyć frameworku, który sporo zrobi za nas).
Po drugie, pojawia się kwestia utrzymania i kosztów. Wdrożenie SSR czy prerenderingu wiąże się choćby z większym obciążeniem serwera (generowanie HTML dla każdej wizyty) lub koniecznością utrzymywania infrastruktury do prerenderingu. W przypadku małych serwisów może to nie być problem, ale duże aplikacje o ogromnym ruchu muszą to wkalkulować.
Czy poprawa SEO zawsze zrekompensuje te koszty? W większości przypadków pewnie tak – dodatkowy organiczny ruch przekłada się na przychody, a pozycjonowanie lokalne czy globalne to często główne źródło klientów. Jednak decydenci powinni mieć świadomość, że architektura SEO-friendly czasem oznacza trade-off, bo to minimalnie większe nakłady na rozwój i infrastrukturę w zamian za lepszą widoczność. W dobie rosnącej konkurencji online (każdy ruch się liczy) jest to zwykle koszt, który warto ponieść, co potwierdzają wyniki eksperymentu.
Inny temat to uniwersalność wniosków. Badanie objęło konkretne technologie (React, Next.js, Flask) i jedną domenę tematyczną (blog podróżniczy). Czy wyniki są przekładalne na inne stacki i branże? Autorzy sugerują, że tak, bo podstawowe zasady (SSR dla SPA, optymalizacja wydajności, itp.) są uniwersalne dla każdej technologii.
W przyszłości interesujące byłoby rozszerzenie testów na inne popularne rozwiązania, np. Angular z Angular Universal czy Vue.js z Nuxt. Być może będą prowadzone podobne badania, co jeszcze bardziej uwiarygodni te tezy. Ciekawe byłoby też sprawdzenie, jak reagują użytkownicy nietechniczni – czy zauważą różnice w szybkości i płynności między różnymi implementacjami SPA/MPA (autorzy proponują takie badania user experience jako kolejny krok).
Nie sposób pominąć również aspektu, który w badaniu nie był pierwszoplanowy: treści i intencji wyszukiwania. Można wyobrazić sobie SPA zoptymalizowane technicznie wzorowo, ale jeśli nie odpowie ono na zapytania użytkowników albo działa w niszy YMYL (Your Money, Your Life) bez budowania zaufania – i tak nie osiągnie topów rankingu.
W realnym SEO liczy się synergia: technologia + treść + autorytet. Omawiane badanie koncentrowało się na technologii, dając nam jasne wytyczne w tej dziedzinie. Natomiast SEOwcy powinni wdrażać te wytyczne ręka w rękę z optymalizacją contentu (słowa kluczowe, długi ogon, jakość informacji) oraz z działaniami off-site (link building, obecność w mediach społecznościowych, itp.).
Dopiero wtedy efekty będą maksymalne. Zaletą prac Kowalczyk i Szandały jest to, że eliminują one „techniczne wymówki” – po ich publikacji trudno wytłumaczyć słabe wyniki SPA wyłącznie ograniczeniami technicznymi. Wiemy już, jak te bariery pokonać. Reszta leży w rękach twórców treści i strategów SEO.
Podsumowując, najnowsze badanie polskich naukowców dowodzi, że Single-Page Application może być równie skutecznie wypozycjonowana jak Multi-Page Application, jeśli zastosujemy odpowiednie praktyki.
Dla branży SEO to ważny sygnał: nie trzeba się bać nowoczesnych technologii, wystarczy je okiełznać. Z perspektywy deweloperów warto od początku projektować aplikacje z myślą o SEO (zasada „SEO by design”), bo późniejsze dostosowanie SPA może wymagać dużych zmian.
W erze, gdzie biznes przenosi się do sieci szybciej niż kiedykolwiek, a konkurencja w Google jest zaciekła, synergia UX i SEO to klucz do sukcesu. Badanie pokazuje, że taka synergia jest w zasięgu ręki. Mamy narzędzia i metody, by przyspieszyć strony, zadowolić użytkowników i jednocześnie zaskarbić sobie względy algorytmów wyszukiwarek. Teraz piłka jest po stronie praktyków – pora wdrożyć te rekomendacje w realnych projektach.
Źródło
Karolina Kowalczyk, Tomasz Szandała (2024). Enhancing SEO in Single-Page Web Applications in Contrast With Multi-Page Applications. IEEE Access, vol. 12, pp. 11597–11614 .
Artykuł dostępny na licencji CC BY 4.0,
DOI: https://doi.org/10.1109/ACCESS.2024.3355740
Artur Strzelecki
Ostatnie wpisy Artur Strzelecki (zobacz wszystkie)
- SEO w Single-Page Application (SPA) na poziomie MPA? Jak to osiągnąć? - 21 lipca 2025
- AI Overviews w Google Discover - 18 lipca 2025
- Gdy wyszukiwarki spotykają modele językowe – rewolucja AI a przyszłość SEO - 14 lipca 2025