Skip to content

TkxSEO

TkxSEO writes <meta>, Open Graph, Twitter Card, and JSON-LD tags to document.head from a React component.

SituationUse
Plain client-rendered SPA (Vite/CRA, no SSR)TkxSEO is the right tool — there’s no server head to write to
Client route changes / dashboards behind auth / embedded views✅ Supplement — update tags as the SPA navigates
Next.js, Remix, Astro pages❌ Use the framework’s head API for crawlable SEO
// Next.js App Router — crawlable, server-rendered
export const metadata = {
title: 'My Page',
description: 'A description',
openGraph: { images: ['/og.png'] },
};
---
// Astro — in the page frontmatter / layout <head>
---
<head>
<title>My Page</title>
<meta name="description" content="A description" />
<meta property="og:image" content="/og.png" />
</head>
// Plain React SPA — TkxSEO IS your best option
import { TkxSEO } from 'tekivex-ui';
<TkxSEO
title="My Page"
description="A description"
image="https://example.com/og.png"
canonical="https://example.com/page"
/>

Set ogType="article" and the article props to emit article:* Open Graph tags:

<TkxSEO
ogType="article"
title="Shipping a design system"
description="How we built it"
articleAuthor="Ada Lovelace"
articlePublishedTime="2026-01-01T00:00:00Z"
articleModifiedTime="2026-02-01T00:00:00Z"
articleSection="Engineering"
articleTags={['react', 'design-systems']}
/>

seoSchema builds common structured-data objects: softwareApplication, article, product, faqPage, breadcrumbList.

import { TkxSEO, seoSchema } from 'tekivex-ui';
<TkxSEO
title="tekivex-ui"
schema={seoSchema.softwareApplication({ name: 'tekivex-ui', description: '', url: 'https://ui.tekivex.com' })}
/>
PropTypeDefaultDescription
titlestringdocument.title + og/twitter title.
descriptionstringdescription / og / twitter description.
canonicalstringCanonical URL + og:url.
keywordsstringComma-separated keywords meta.
imagestringog:image / twitter:image (1200×630).
twitterSite / twitterCreatorstringTwitter handles.
ogType'website' | 'article' | 'product' | 'profile''website'og:type.
localestringog:locale (e.g. en_US).
robotsstringindex, follow, …Robots directive.
schemaobject | object[]JSON-LD payload(s).
articleAuthorstringarticle:author (article pages).
articlePublishedTimestringarticle:published_time (ISO 8601).
articleModifiedTimestringarticle:modified_time (ISO 8601).
articleSectionstringarticle:section.
articleTagsstring[]One article:tag meta per entry.

Each render removes the tags it previously wrote (data-tkx-seo) before re-writing, and cleans them all up on unmount — no stale accumulation.