
I’m introducing Pages in Profound—my single command center for monitoring content citations, tracking bot activity, and understanding page health.


Inspired by this post on Try Profound Blog.



I’m introducing Pages in Profound—my single command center for monitoring content citations, tracking bot activity, and understanding page health.


Inspired by this post on Try Profound Blog.


When I work on a site built with a framework like Next.js, Nuxt, SvelteKit, or a similar JavaScript framework, I pay close attention to hydration. It is the step that turns server-rendered HTML into an interactive page, but it is often explained in a way that does not connect clearly to SEO.
I think hydration is easier to understand when I separate content from behavior. The content may already be visible, but the page may not be fully usable until the browser finishes connecting that content to the JavaScript behind it.
Hydration is the process where JavaScript in the browser takes over the static HTML that was built on the server. The server sends a complete page first, and then the framework attaches the logic that makes buttons, menus, forms, filters, and other interactive pieces actually work.
Here is how I usually explain the sequence. First, the server builds the page and sends fully formed HTML to the browser. I can see the content quickly, but the page is not interactive yet. Then the framework loads, walks through the existing HTML, attaches event listeners, and reconnects the visible markup to the application logic. Once that is done, the page behaves like a normal interactive app.
This is why server-rendered HTML can feel fast at first. It can paint quickly and often helps with first impressions and Largest Contentful Paint (LCP). The tradeoff is that, with traditional hydration, the page may appear ready before it is actually usable.
The most important distinction I keep in mind is this: hydration does not add the main content to the page. The text, images, and layout should already be present in the server-rendered HTML. Hydration only adds behavior by wiring that HTML to the JavaScript that responds to clicks, typing, taps, and other user actions.

Put simply, before hydration I can read the page. After hydration, I can use it.
I also avoid confusing hydration with the rendering pattern itself. Server-side rendering (SSR), static site generation (SSG), and client-side rendering (CSR) describe where and when the page is built. Hydration describes what happens after server-rendered or statically generated HTML reaches the browser and needs to become interactive.
From an SEO perspective, that distinction matters. When a page uses SSR or SSG correctly, the core content is already in the initial HTML. Google can discover and index that content from the HTML before depending on a JavaScript render step, which is generally more reliable than sending a mostly empty client-rendered shell.
Most of the time, I do not treat hydration itself as an SEO problem. It becomes a problem when hydration breaks, usually because the HTML created on the server does not match what the framework expects to create in the browser.
That kind of mismatch can happen when content depends on browser-only APIs such as localStorage, when a value changes between server and client rendering such as new Date(), when a third-party script or browser extension changes the DOM before hydration finishes, or when invalid HTML causes the browser to rewrite the structure before the framework can attach to it.

When the two versions do not line up, the framework may throw away the mismatched section and re-render it in the browser. The exact behavior depends on the framework, but the SEO and performance risks are similar.
For example, if a <time> value is generated with new Date(), the server may output one value while the browser generates another. That mismatch can force a re-render, even though the page appeared to load correctly at first.
I worry about this because it can hurt the page in several ways. A re-render can make the page feel sluggish, which can affect Interaction to Next Paint (INP). It can shift the layout, which can affect Cumulative Layout Shift (CLS). It can also break user actions if event listeners fail to attach properly, leaving buttons, menus, or forms unresponsive.
In severe cases, Google may read the raw server HTML before JavaScript finishes rendering and then index content that visitors never actually see after the page re-renders. That is the scenario I want to avoid most: search engines and users experiencing different versions of the same page.
The fix is usually not an SEO trick. It is a development fix. I want the underlying mismatch removed by using valid HTML, avoiding browser-only logic during server rendering, stabilizing values that change between server and client, and controlling third-party scripts that alter the DOM too early.

Hydration errors are usually easier to catch in development than on a live site, but I still look for a few practical signals. I start with the browser’s Developer Tools console and check for hydration warnings, JavaScript errors, or framework-specific mismatch messages.
Then I watch the page load carefully. If content flickers, shifts, disappears, reappears, or stays unresponsive for longer than expected, I treat that as a sign worth investigating.
I also use Google Search Console’s URL Inspection tool on important templates to see how Google renders the page. For larger sites, I prefer crawling with JavaScript rendering enabled in tools like Screaming Frog or Sitebulb so I can compare rendered output against raw HTML at scale.
Modern frameworks handle hydration in different ways, and I think of those differences as a balance between performance, interactivity, and how much JavaScript must run in the browser.
Full hydration means the entire page hydrates in one pass. It is straightforward, but it usually ships the most JavaScript and asks the browser to do the most main-thread work. Next.js Pages Router is a common example of this model.

Partial hydration hydrates only the interactive pieces, often called islands. Static sections remain plain HTML and do not need client-side JavaScript. Astro’s islands architecture is a well-known example of this approach.
Progressive hydration hydrates the page in pieces over time. A framework may hydrate sections as they scroll into view or as browser resources become available. Angular’s incremental hydration follows this general pattern.
React Server Components take a different path by letting some components render entirely on the server and ship no client-side JavaScript for those server-only parts. In those cases, there is nothing for the browser to hydrate for that portion of the page. Next.js App Router uses this model.
Resumability goes further by trying to skip hydration entirely. Instead of re-running components on load, the page resumes from the state the server already produced. Qwik is the main example here, although I still view it as newer and less battle-tested than some of the older patterns.
When I compare these techniques, I look at what hydrates, how much JavaScript ships, and how much work the browser must do. Full hydration touches the entire page and usually ships the most JavaScript. Partial hydration touches only interactive components and ships less. Progressive hydration spreads the work over time. React Server Components reduce hydration for server-only parts. Resumability aims to avoid hydration altogether.
I do not assume hydration is bad for SEO. In most cases, it is simply part of how modern server-rendered and statically generated sites become interactive.
What I do watch closely is whether the server HTML and the browser-rendered version agree. If they do, hydration is usually a performance and user experience consideration. If they do not, hydration can become a visibility problem, especially when Google indexes a version of the page that users never see.
Newer frameworks reduce some of this risk by shipping less JavaScript and doing less work in the browser, but they do not remove the need for careful implementation. For me, the practical takeaway is simple: make sure the important content is present in the initial HTML, keep server and client output consistent, and test how search engines actually render the page.
Inspired by this post on Search Engine Land.


I’ve learned that website migrations often fail due to small oversights. That’s why I focus on reducing risks with thorough pre-launch, launch-day, and post-launch SEO checks.
Website migrations can notoriously go awry, even with the best planning. I’ve seen rankings slip, traffic drop, and tracking break. Surprisingly, it’s usually the small oversights rather than complex technical issues that cause these problems.
I approach website migrations with a staging process. The checks I perform during staging, on launch day, and in the few weeks following the launch are crucial. They often determine whether a migration stabilizes quickly or spirals into a long recovery project.
I’ve found that most migration problems should be identified and resolved on the staging site. If issues make it to the live site, recovery tends to be slower and more uncertain. Here’s how I set myself up for success:
A common mistake I’ve encountered is making the staging site publicly indexable. Google crawling a staging environment can lead to duplicate content in search results, causing rankings to fluctuate and unfinished pages to be indexed.
I make it a point to block crawlers from the staging site or protect it with a password to ensure it stays invisible to search engines until the live launch.
It’s not just about the crawlers. I’ve seen ecommerce sites where customers found the staging site and tried to place orders, creating confusion and frustration internally.
To help identify real issues rather than reacting to normal shifts, I always take a baseline. I record organic sessions, rankings, top landing pages, indexed pages, conversions, and site speed before moving to the new site.
For me, it’s crucial to focus on pages that drive traffic, revenue, or attract links. These need extra care during redirect mapping, content review, and testing, with special attention to internal links, redirects, and URL rules.

Templates are the backbone of a website, controlling titles, headings, metadata, and more. If templates break, similar problems can spread across countless pages. Here’s what I check:
On launch day, preparation meets reality. I join my SEO, developer, and design teams to make sure what worked on staging works on the live site as well. Even small oversights can immediately impact rankings, traffic, and user experience.
It’s not enough to spot-check. Every mapped URL should redirect correctly, without chains or loops, as they can slow down crawling and delay signal consolidation.
Immediately after the site goes live, I run a full crawl and compare the results to the staging crawl to spot any differences. I’m on the lookout for broken links, redirected internal links, missing pages, and server errors.
Menüs, breadcrumbs, and in-content links should directly point to live URLs. Allowing internal links to rely on redirects adds unnecessary load and risk.
I know that even with the best planning, surprises can emerge once search engines and real users start interacting with the site. Small errors missed on staging can suddenly affect rankings or traffic.
Structured monitoring in the days and weeks post-launch is crucial. By catching issues early, I can ensure they don’t impact performance or user experience.
Inspired by this post on Search Engine Land.


When faced with limited development resources, it can feel impossible to address all technical SEO issues. I’ve found that focusing on architecture, indexing, and performance can drive significant gains.
Let me share my insights on tackling technical SEO effectively, even when resources are stretched thin. Technical issues often stall progress, but they remain a top priority for many SEOs and are crucial for Google’s rankings.
One major hurdle I encounter in-house is the limited resources available for implementing website changes. In fact, up to 67% of respondents in Aira’s State of Technical SEO Report cite non-SEO development tasks as a key impediment to making necessary changes.
This shortfall in resources potentially costs businesses millions in revenue every year, according to seoClarity. Therefore, I believe it’s essential to focus on the tasks that deliver the highest impact.
Let’s dive into where you should focus first by employing prioritization techniques. Aira’s report suggests focusing on quick wins, KPI impacts, user impact, best practices, and staying ahead of industry changes.

For massive sites, it can be hard to know where to start. I suggest working with small groups of keywords or specific product areas, addressing barriers to ranking, ensuring key pages are indexed, and improving or eliminating low-quality pages.
Conducting a technical SEO audit helps pinpoint the exact issues needing attention and provides a prioritized list of tasks. SEO tools and resources like SEO prioritization techniques can guide you in focusing on impactful areas.
Now, let’s discuss key foundational fixes, starting from site architecture, an essential part of a smooth-running SEO program. Proper site structure ensures effective crawling, indexing, and user experience, setting your site up for search success.
By organizing your site around search patterns, you align content and navigation with the keywords and queries users are likely to use, thus enhancing the search and user experience.

With effective internal linking, you reinforce your site’s topical authority, guiding users to priority pages and turning your site structure into a ranking powerhouse.
However, in large enterprises, a full site architecture overhaul can be daunting. I recommend focusing on specific tasks that can be implemented with minimal resistance, such as strengthening internal links and consolidating overlapping topics.
Focusing on critical issues like crawling and indexing inefficiencies can dramatically improve search visibility. By addressing high-priority indexing issues first, you ensure search engines can accurately reflect your most valuable content.
It’s crucial to eliminate signal dilution, which can occur from conflicting URLs or poorly managed canonical tags. Reducing crawl waste ensures that search engines focus their efforts on high-value pages, not unnecessary ones.

Regarding website performance, a site that’s difficult to use can squander hard-earned organic traffic. Sites like Yelp and Pinterest have shown how investments in site performance can significantly increase user engagement and revenue.
Start by fixing any backend bottlenecks, as they impact everything from speed to user experience. Optimizing JavaScript and rendering processes can further enhance site interactivity and stability.
Improving your website’s perceived speed by prioritizing essential elements for users can make a notable difference in performance scores. Focus on preload strategies, inlining critical CSS, and reserving layout space for dynamic content.
For mobile user experience, it’s vital that your site not only looks good but performs optimally on mobile devices. With the majority of traffic coming from mobile, ensuring your site’s content and navigation are mobile-friendly is critical.
Think about how to optimize for mobile-first indexing, easy navigation, and emerging behaviors like voice search to retain and convert mobile users effectively.
By building momentum through strategic technical SEO wins, focusing on site structure, crawlability, and user experience, I know you’ll set your SEO program on a path to success, even with limited resources.
Inspired by this post on Search Engine Land.
