Skip to content

Chore/seo#461

Merged
LGLabGreg merged 17 commits intomainfrom
chore/seo
Feb 28, 2026
Merged

Chore/seo#461
LGLabGreg merged 17 commits intomainfrom
chore/seo

Conversation

@LGLabGreg
Copy link
Owner

@LGLabGreg LGLabGreg commented Feb 28, 2026

Summary by CodeRabbit

  • Style

    • Standardized and updated page headings across example pages.
  • Chores

    • Bumped several project dependencies to newer stable versions.
    • Expanded site metadata for better SEO and richer social sharing.
  • New Features

    • Added robots/sitemap configuration to enable search engine indexing.

dependabot bot and others added 16 commits February 17, 2026 22:35
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.564.0 to 0.574.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/0.574.0/packages/lucide-react)

---
updated-dependencies:
- dependency-name: lucide-react
  dependency-version: 0.574.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ucide-react-0.574.0

chore(deps): bump lucide-react from 0.564.0 to 0.574.0
Bumps the tailwind group with 2 updates: [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) and [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss).


Updates `@tailwindcss/postcss` from 4.1.18 to 4.2.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.0/packages/@tailwindcss-postcss)

Updates `tailwindcss` from 4.1.18 to 4.2.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.0/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: tailwind
- dependency-name: tailwindcss
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: tailwind
...

Signed-off-by: dependabot[bot] <support@github.com>
…ailwind-90af11599f

chore(deps-dev): bump the tailwind group with 2 updates
Bumps the typescript group with 1 update: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node).


Updates `@types/node` from 25.2.3 to 25.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: typescript
...

Signed-off-by: dependabot[bot] <support@github.com>
…ypescript-800ef8dab0

chore(deps-dev): bump @types/node from 25.2.3 to 25.3.0 in the typescript group
Bumps the tailwind group with 1 update: [tailwind-merge](https://github.com/dcastil/tailwind-merge).


Updates `tailwind-merge` from 3.4.1 to 3.5.0
- [Release notes](https://github.com/dcastil/tailwind-merge/releases)
- [Commits](dcastil/tailwind-merge@v3.4.1...v3.5.0)

---
updated-dependencies:
- dependency-name: tailwind-merge
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: tailwind
...

Signed-off-by: dependabot[bot] <support@github.com>
…ailwind-dccea5b1ac

chore(deps): bump tailwind-merge from 3.4.1 to 3.5.0 in the tailwind group
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.574.0 to 0.575.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/0.575.0/packages/lucide-react)

---
updated-dependencies:
- dependency-name: lucide-react
  dependency-version: 0.575.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ucide-react-0.575.0

chore(deps): bump lucide-react from 0.574.0 to 0.575.0
Bumps the react group with 1 update: [react-hook-form](https://github.com/react-hook-form/react-hook-form).


Updates `react-hook-form` from 7.71.1 to 7.71.2
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](react-hook-form/react-hook-form@v7.71.1...v7.71.2)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-version: 7.71.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
...

Signed-off-by: dependabot[bot] <support@github.com>
…eact-2caafb436d

chore(deps): bump react-hook-form from 7.71.1 to 7.71.2 in the react group
Bumps the tailwind group with 2 updates: [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) and [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss).


Updates `@tailwindcss/postcss` from 4.2.0 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/@tailwindcss-postcss)

Updates `tailwindcss` from 4.2.0 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: tailwindcss
  dependency-version: 4.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwind
...

Signed-off-by: dependabot[bot] <support@github.com>
…ailwind-13cb420751

chore(deps-dev): bump the tailwind group with 2 updates
@vercel
Copy link

vercel bot commented Feb 28, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
reactqrcode-com Ready Ready Preview, Comment Feb 28, 2026 9:50am

@coderabbitai
Copy link

coderabbitai bot commented Feb 28, 2026

Walkthrough

Adds Next.js page metadata exports across docs pages, enriches root layout metadata, introduces a robots metadata route, and bumps several dependencies in docs and root package manifests.

Changes

Cohort / File(s) Summary
Dependency updates
apps/docs/package.json, package.json, packages/react-qr-code/package.json
Bumped versions: lucide-react, react-hook-form, tailwind-merge, @tailwindcss/postcss, tailwindcss, and @types/node (to ^25.3.0). No script or structural changes.
Docs page metadata (many pages)
apps/docs/src/app/page.tsx, apps/docs/src/app/demo/page.tsx, apps/docs/src/app/quick-start/page.tsx, apps/docs/src/app/installation/page.tsx, apps/docs/src/app/react-qr-code-props/page.tsx, apps/docs/src/app/ref-api/page.tsx, apps/docs/src/app/llms-txt/page.tsx, apps/docs/src/app/data-modules-settings/page.tsx, apps/docs/src/app/.../page.tsx
Added export const metadata: Metadata (imported from next) with title and description to many docs routes. Several pages include small heading/text copy adjustments (e.g., basic → "Basic example", heading case changes, extra links/descriptions).
Examples & settings pages
apps/docs/src/app/examples/.../page.tsx, apps/docs/src/app/finder-pattern-inner-settings/page.tsx, apps/docs/src/app/finder-pattern-outer-settings/page.tsx, apps/docs/src/app/gradient-settings/page.tsx, apps/docs/src/app/image-settings/page.tsx
Added typed metadata exports to example and settings pages; minor UI text tweaks and added internal navigation links in some finder-pattern pages.
Layout & robots
apps/docs/src/app/layout.tsx, apps/docs/src/app/robots.ts
Expanded metadata object in root layout.tsx (metadataBase, title object, keywords, alternates, openGraph, twitter). Added robots route returning a MetadataRoute.Robots object (rules + sitemap).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Chore/deps #449: Overlapping dependency bumps in apps/docs/package.json (lucide-react, tailwind-merge, @types/node).
  • Chore/deps 09 11 25 #313: Related dependency version updates for apps/docs/package.json.
  • Feat/llm #405: Changes to the llms-txt page; this PR adds metadata to that page and overall docs SEO changes.

Poem

🐇 I hopped through pages, small and spry,
Adding titles for the searcher's eye,
Robots hum and sitemaps sing,
Dependencies bumped — a gentle spring.
Hooray, the docs now gleam and pry!

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Chore/seo' is vague and lacks specificity about what SEO improvements or changes are being made, making it difficult for reviewers to understand the scope from the title alone. Consider a more descriptive title like 'chore: add metadata exports and SEO configuration to documentation pages' that clearly conveys the primary changes.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/seo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
apps/docs/src/app/examples/finder-patterns/page.tsx (1)

9-18: Same minor casing inconsistency as noted in basic/page.tsx.

The metadata title "Finder Patterns Example" uses title case while the heading "Finder patterns example" uses sentence case. This is consistent with the pattern in basic/page.tsx but differs from other pages like "Demo" that use matching casing.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/docs/src/app/examples/finder-patterns/page.tsx` around lines 9 - 18, The
metadata.title ("Finder Patterns Example") and the PageHeading heading prop
("Finder patterns example") have inconsistent casing; update one to match the
other for consistency (e.g., change metadata.title to "Finder patterns example"
or PageHeading's heading prop to "Finder Patterns Example"). Edit the export
const metadata object (metadata.title) or the Page component where <PageHeading
heading=... /> so both use the same casing.
apps/docs/src/app/examples/basic/page.tsx (1)

8-17: Minor casing inconsistency between metadata title and page heading.

The metadata title uses "Basic Example" (title case) while the PageHeading uses "Basic example" (sentence case). Other pages like "Demo" and "Quick Start" use consistent casing between metadata and heading. Consider aligning for consistency, though this is a minor nit.

📝 Optional: Align casing
 export const metadata: Metadata = {
-  title: 'Basic Example',
+  title: 'Basic example',
   description:

Or alternatively:

-      <PageHeading heading='Basic example' />
+      <PageHeading heading='Basic Example' />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/docs/src/app/examples/basic/page.tsx` around lines 8 - 17, The
metadata.title ("Basic Example") and the PageHeading heading prop ("Basic
example") are inconsistently cased; update one to match the other for
consistency — either change export const metadata: Metadata's title to "Basic
example" or update the PageHeading call in export default function Page to use
"Basic Example" so the metadata.title and the PageHeading heading prop are
identical.
apps/docs/src/app/gradient-settings/page.tsx (1)

10-10: Consider a more human-readable SEO title.

GradientSettings works, but Gradient Settings is likely friendlier in SERP/page-title rendering.

Suggested tweak
 export const metadata: Metadata = {
-  title: 'GradientSettings',
+  title: 'Gradient Settings',
   description:
     'Configuration options for GradientSettings in `@lglab/react-qr-code`, including gradient type, stops, and rotation for QR code data or backgrounds.',
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/docs/src/app/gradient-settings/page.tsx` at line 10, The page's SEO
title uses a camel-cased string "GradientSettings"; update the metadata title
property (the title key in the exported object in page.tsx) to a human-readable
"Gradient Settings" so the page title and SERP rendering show a spaced,
user-friendly label.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/docs/src/app/layout.tsx`:
- Around line 37-39: Update the alternates.canonical value in the layout.tsx
metadata from '/' to './' so each page self-canonicalizes; locate the alternates
object (alternates: { canonical: '/' }) and change the canonical string to './'.

---

Nitpick comments:
In `@apps/docs/src/app/examples/basic/page.tsx`:
- Around line 8-17: The metadata.title ("Basic Example") and the PageHeading
heading prop ("Basic example") are inconsistently cased; update one to match the
other for consistency — either change export const metadata: Metadata's title to
"Basic example" or update the PageHeading call in export default function Page
to use "Basic Example" so the metadata.title and the PageHeading heading prop
are identical.

In `@apps/docs/src/app/examples/finder-patterns/page.tsx`:
- Around line 9-18: The metadata.title ("Finder Patterns Example") and the
PageHeading heading prop ("Finder patterns example") have inconsistent casing;
update one to match the other for consistency (e.g., change metadata.title to
"Finder patterns example" or PageHeading's heading prop to "Finder Patterns
Example"). Edit the export const metadata object (metadata.title) or the Page
component where <PageHeading heading=... /> so both use the same casing.

In `@apps/docs/src/app/gradient-settings/page.tsx`:
- Line 10: The page's SEO title uses a camel-cased string "GradientSettings";
update the metadata title property (the title key in the exported object in
page.tsx) to a human-readable "Gradient Settings" so the page title and SERP
rendering show a spaced, user-friendly label.

ℹ️ Review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a23f49d and 991101b.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (23)
  • apps/docs/package.json
  • apps/docs/src/app/data-modules-settings/page.tsx
  • apps/docs/src/app/demo/page.tsx
  • apps/docs/src/app/examples/background/page.tsx
  • apps/docs/src/app/examples/basic/page.tsx
  • apps/docs/src/app/examples/data-modules/page.tsx
  • apps/docs/src/app/examples/download/page.tsx
  • apps/docs/src/app/examples/finder-patterns/page.tsx
  • apps/docs/src/app/examples/image/page.tsx
  • apps/docs/src/app/finder-pattern-inner-settings/page.tsx
  • apps/docs/src/app/finder-pattern-outer-settings/page.tsx
  • apps/docs/src/app/gradient-settings/page.tsx
  • apps/docs/src/app/image-settings/page.tsx
  • apps/docs/src/app/installation/page.tsx
  • apps/docs/src/app/layout.tsx
  • apps/docs/src/app/llms-txt/page.tsx
  • apps/docs/src/app/page.tsx
  • apps/docs/src/app/quick-start/page.tsx
  • apps/docs/src/app/react-qr-code-props/page.tsx
  • apps/docs/src/app/ref-api/page.tsx
  • apps/docs/src/app/robots.ts
  • package.json
  • packages/react-qr-code/package.json

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
apps/docs/src/app/layout.tsx (1)

22-57: Well-structured metadata configuration for SEO.

The metadata setup follows Next.js best practices: metadataBase enables proper URL composition, the title template pattern allows consistent page titles, and canonical: './' correctly self-canonicalizes each route.

One optional improvement: the twitter.card is set to 'summary_large_image', which is designed to display a large preview image. Without an images property in either twitter or openGraph, social platforms will show a text-only card. Consider adding an og:image to improve social sharing previews:

openGraph: {
  // ...existing properties
  images: [{ url: '/og-image.png', width: 1200, height: 630 }],
},

,

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/docs/src/app/layout.tsx` around lines 22 - 57, Add social preview images
to the metadata so the summary_large_image card renders with a preview: update
the exported metadata object (symbol: metadata) to include openGraph.images with
at least one image entry (e.g., url, width, height) and/or add a twitter.images
or twitter.image property to match; ensure the image path is a public/absolute
URL or served statically so social platforms can fetch it and the dimensions
match common OG sizes (e.g., 1200x630).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@apps/docs/src/app/layout.tsx`:
- Around line 22-57: Add social preview images to the metadata so the
summary_large_image card renders with a preview: update the exported metadata
object (symbol: metadata) to include openGraph.images with at least one image
entry (e.g., url, width, height) and/or add a twitter.images or twitter.image
property to match; ensure the image path is a public/absolute URL or served
statically so social platforms can fetch it and the dimensions match common OG
sizes (e.g., 1200x630).

ℹ️ Review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 991101b and 1abffc0.

📒 Files selected for processing (1)
  • apps/docs/src/app/layout.tsx

@LGLabGreg LGLabGreg merged commit c6b6633 into main Feb 28, 2026
5 checks passed
@LGLabGreg LGLabGreg deleted the chore/seo branch February 28, 2026 09:53
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.

1 participant