Skip to content

ENG-8969: Updates for SEO#1770

Merged
Alek99 merged 2 commits intomainfrom
carlos/update-for-seo
Mar 9, 2026
Merged

ENG-8969: Updates for SEO#1770
Alek99 merged 2 commits intomainfrom
carlos/update-for-seo

Conversation

@carlosabadia
Copy link
Collaborator

No description provided.

@linear
Copy link

linear bot commented Mar 9, 2026

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 9, 2026

Greptile Summary

This PR makes a broad set of SEO improvements across the reflex-web marketing site. Blog post files are renamed from date-prefixed slugs (e.g. 2024-04-16-custom-components.md) to clean slug-only names (custom-components.md), with corresponding 301 redirects for all old URLs registered in pcweb.py. Alongside the renames, the following improvements are applied across the site:

  • JSON-LD structured data added to the homepage (Organization + WebSite), blog index (Blog + ItemList), and pricing page (SoftwareApplication).
  • Titles and meta descriptions updated across 20+ pages and blog posts to be more keyword-rich and descriptive.
  • title_tag frontmatter introduced for blog posts, allowing the browser <title> and H1 to use a longer, keyword-optimised string while keeping the short display title for UI use.
  • H1 hygiene improved: several pages that previously lacked an h1 element (gallery, demo, sales) now have one; some pages with an h2 as the primary heading were promoted to h1.
  • Blog sort order corrected in paths.py to sort by date metadata rather than by filename, since filenames no longer carry date prefixes.
  • Case study pages gain an optional h1 frontmatter field so the on-page heading can differ from the company name alone.

Confidence Score: 4/5

  • PR is safe to merge with one minor routing concern to verify before deploying.
  • Changes are almost entirely metadata, structured-data, and title/description updates with no state or logic changes. The blog file renames are covered by comprehensive redirects. The only substantive concerns are: (1) a hardcoded domain string in the new JSON-LD helper that should use the existing constant, and (2) the BLOG_LINK in hosting_banner.py dropping the trailing slash that matches the route convention used everywhere else in the site — this could result in a broken link from the hosting banner.
  • Pay close attention to pcweb/components/hosting_banner.py (missing trailing slash on BLOG_LINK) and pcweb/meta/meta.py (hardcoded domain in blog_index_jsonld).

Important Files Changed

Filename Overview
pcweb/meta/meta.py Adds three new JSON-LD structured data functions (website_organization_jsonld, blog_index_jsonld, pricing_jsonld) and updates ONE_LINE_DESCRIPTION; blog_index_jsonld hardcodes the domain URL instead of using the already-imported REFLEX_DOMAIN_URL constant.
pcweb/pages/blog/paths.py Switches blog sort order from file path (alphabetical) to date metadata, which is correct now that filenames no longer have date prefixes.
pcweb/pcweb.py Adds 30+ redirect rules from old date-prefixed blog URLs to new slug-only URLs, introduces _redirect_page helper with screen-reader h1, and adds sitemap exclusion context for redirected routes.
pcweb/components/hosting_banner.py Updates BLOG_LINK from old date-prefixed URL (with trailing slash) to new slug-only URL (without trailing slash), which may be inconsistent with how Reflex registers blog routes.
pcweb/templates/storypage.py Adds optional h1 parameter to hero() and storypage() to decouple the H1 heading from the company name for SEO purposes; updates title format to "Case Study - Reflex Customer Stories".
pcweb/pages/landing/landing.py Adds website_organization_jsonld structured data and a description meta tag to the homepage.
pcweb/pages/pricing/pricing.py Adds pricing_jsonld SoftwareApplication structured data and updated title/description for the pricing page.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Browser Request] --> B{Old date-prefixed URL?}
    B -- Yes --> C[_redirect_page rendered]
    C --> D[on_load: rx.redirect to slug-only URL]
    D --> E[Slug-only blog route]
    B -- No --> E

    E --> F[Document loaded from .md file]
    F --> G{Has title_tag metadata?}
    G -- Yes --> H[H1 uses title_tag for SEO]
    G -- No --> I[H1 uses title]

    J[Homepage] --> K[Organization and WebSite JSON-LD]
    L[Blog index] --> M[Blog and ItemList JSON-LD]
    N[Pricing page] --> O[SoftwareApplication JSON-LD]
Loading

Last reviewed commit: 1ba0183

@Alek99 Alek99 merged commit e6392ba into main Mar 9, 2026
10 checks passed
@Alek99 Alek99 deleted the carlos/update-for-seo branch March 9, 2026 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants