| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@tanstack/devtools-seo': patch | ||
| --- | ||
|
|
||
| Add the first SEO devtools plugin release with React support, live SERP and social previews, JSON-LD inspection, heading and link analysis, and an overview score. The plugin now ignores devtools-owned DOM, refreshes key sections on route changes, and uses a more balanced overall health weighting. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| <!doctype html> | ||
| <html lang="en"> | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <link rel="icon" type="image/svg+xml" href="/emblem-light.svg" /> | ||
| <link rel="shortcut icon" href="/emblem-light.svg" /> | ||
| <link rel="apple-touch-icon" href="/emblem-light.svg" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
| <meta name="theme-color" content="#000000" /> | ||
|
|
||
| <title>SEO Devtools Example - TanStack Devtools</title> | ||
| <meta | ||
| name="description" | ||
| content="A React example for the TanStack SEO devtools plugin." | ||
| /> | ||
| <meta property="og:title" content="SEO Devtools Example" /> | ||
| <meta | ||
| property="og:description" | ||
| content="Inspect page metadata, headings, links, and structured data." | ||
| /> | ||
| <meta property="og:url" content="https://example.com/seo" /> | ||
| <meta | ||
| property="og:image" | ||
| content="https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=800" | ||
| /> | ||
| <meta name="twitter:card" content="summary_large_image" /> | ||
| <meta name="twitter:title" content="SEO Devtools Example" /> | ||
| <meta | ||
| name="twitter:description" | ||
| content="Inspect page metadata, headings, links, and structured data." | ||
| /> | ||
| <link rel="canonical" href="https://example.com/seo" /> | ||
| </head> | ||
| <body> | ||
| <script id="seo-json-ld" type="application/ld+json"> | ||
| { | ||
| "@context": "https://schema.org", | ||
| "@type": "WebSite", | ||
| "name": "TanStack Devtools SEO Example", | ||
| "url": "https://example.com/seo" | ||
| } | ||
| </script> | ||
| <noscript>You need to enable JavaScript to run this app.</noscript> | ||
| <div id="root"></div> | ||
| <script type="module" src="/src/index.tsx"></script> | ||
| </body> | ||
| </html> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| { | ||
| "name": "@tanstack/react-devtools-seo-example", | ||
| "private": true, | ||
| "type": "module", | ||
| "scripts": { | ||
| "dev": "vite --port=3006", | ||
| "build": "vite build", | ||
| "preview": "vite preview", | ||
| "test:types": "tsc" | ||
| }, | ||
| "dependencies": { | ||
| "@tanstack/devtools-seo": "workspace:^", | ||
| "@tanstack/react-devtools": "^0.10.2", | ||
| "@tanstack/react-router": "^1.132.0", | ||
| "react": "^19.2.0", | ||
| "react-dom": "^19.2.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@tanstack/devtools-vite": "0.6.0", | ||
| "@types/react": "^19.2.0", | ||
| "@types/react-dom": "^19.2.0", | ||
| "@vitejs/plugin-react": "^6.0.1", | ||
| "vite": "^8.0.0" | ||
| }, | ||
| "browserslist": { | ||
| "production": [ | ||
| ">0.2%", | ||
| "not dead", | ||
| "not op_mini all" | ||
| ], | ||
| "development": [ | ||
| "last 1 chrome version", | ||
| "last 1 firefox version", | ||
| "last 1 safari version" | ||
| ] | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| import { | ||
| Link, | ||
| Outlet, | ||
| RouterProvider, | ||
| createRootRoute, | ||
| createRoute, | ||
| createRouter, | ||
| } from '@tanstack/react-router' | ||
|
|
||
| function AppShell() { | ||
| return ( | ||
| <div> | ||
| <nav | ||
| style={{ | ||
| display: 'flex', | ||
| gap: 12, | ||
| padding: '16px 24px 0', | ||
| }} | ||
| > | ||
| <Link to="/">Home</Link> | ||
| <Link to="/about">About</Link> | ||
| </nav> | ||
| <Outlet /> | ||
| </div> | ||
| ) | ||
| } | ||
|
|
||
| const rootRoute = createRootRoute({ | ||
| component: AppShell, | ||
| }) | ||
|
|
||
| const indexRoute = createRoute({ | ||
| getParentRoute: () => rootRoute, | ||
| path: '/', | ||
| component: () => { | ||
| return <h1>Home</h1> | ||
| }, | ||
| }) | ||
|
|
||
| const aboutRoute = createRoute({ | ||
| getParentRoute: () => rootRoute, | ||
| path: '/about', | ||
| component: () => { | ||
| return <h1>About</h1> | ||
| }, | ||
| }) | ||
|
|
||
| const routeTree = rootRoute.addChildren([indexRoute, aboutRoute]) | ||
|
|
||
| const router = createRouter({ | ||
| routeTree, | ||
| }) | ||
|
|
||
| export default function App() { | ||
| return <RouterProvider router={router} /> | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| import { createRoot } from 'react-dom/client' | ||
| import { seoDevtoolsPlugin } from '@tanstack/devtools-seo/react' | ||
| import { TanStackDevtools } from '@tanstack/react-devtools' | ||
|
|
||
| import App from './App' | ||
|
|
||
| createRoot(document.getElementById('root')!).render( | ||
| <> | ||
| <App /> | ||
| <TanStackDevtools plugins={[seoDevtoolsPlugin()]} /> | ||
| </>, | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| { | ||
| "compilerOptions": { | ||
| "target": "ESNext", | ||
| "lib": ["DOM", "DOM.Iterable", "ESNext"], | ||
| "module": "ESNext", | ||
| "skipLibCheck": true, | ||
| "moduleResolution": "Bundler", | ||
| "allowImportingTsExtensions": true, | ||
| "resolveJsonModule": true, | ||
| "isolatedModules": true, | ||
| "noEmit": true, | ||
| "jsx": "react-jsx", | ||
| "strict": true, | ||
| "noUnusedLocals": true, | ||
| "noUnusedParameters": true, | ||
| "noFallthroughCasesInSwitch": true | ||
| }, | ||
| "include": ["src", "vite.config.ts"] | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| import react from '@vitejs/plugin-react' | ||
| import { defineConfig } from 'vite' | ||
| import { devtools } from '@tanstack/devtools-vite' | ||
|
|
||
| export default defineConfig({ | ||
| plugins: [devtools(), react()], | ||
| }) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,78 @@ | ||
| { | ||
| "name": "@tanstack/devtools-seo", | ||
| "version": "0.1.0", | ||
| "description": "SEO overview panel for TanStack Devtools", | ||
| "author": "TanStack", | ||
| "license": "MIT", | ||
| "repository": { | ||
| "type": "git", | ||
| "url": "git+https://github.com/TanStack/devtools.git", | ||
| "directory": "packages/devtools-seo" | ||
| }, | ||
| "homepage": "https://tanstack.com/devtools", | ||
| "funding": { | ||
| "type": "github", | ||
| "url": "https://github.com/sponsors/tannerlinsley" | ||
| }, | ||
| "keywords": [ | ||
| "devtools", | ||
| "seo", | ||
| "solid-js" | ||
| ], | ||
| "type": "module", | ||
| "types": "dist/esm/index.d.ts", | ||
| "module": "dist/esm/index.js", | ||
| "exports": { | ||
| ".": { | ||
| "import": { | ||
| "types": "./dist/esm/index.d.ts", | ||
| "default": "./dist/esm/index.js" | ||
| } | ||
| }, | ||
| "./react": { | ||
| "import": { | ||
| "types": "./dist/esm/react/index.d.ts", | ||
| "default": "./dist/esm/react/index.js" | ||
| } | ||
| }, | ||
| "./package.json": "./package.json" | ||
| }, | ||
| "sideEffects": false, | ||
| "engines": { | ||
| "node": ">=18" | ||
| }, | ||
| "files": [ | ||
| "dist/", | ||
| "src" | ||
| ], | ||
| "scripts": { | ||
| "clean": "premove ./build ./dist", | ||
| "lint:fix": "eslint ./src --fix", | ||
| "test:eslint": "eslint ./src", | ||
| "test:types": "tsc", | ||
| "test:build": "publint --strict", | ||
| "build": "vite build" | ||
| }, | ||
| "dependencies": { | ||
| "@tanstack/devtools-ui": "workspace:*", | ||
| "@tanstack/devtools-utils": "workspace:*", | ||
| "goober": "^2.1.16", | ||
| "solid-js": "^1.9.9" | ||
| }, | ||
| "peerDependencies": { | ||
| "react": ">=16.8", | ||
| "solid-js": ">=1.9.7" | ||
| }, | ||
| "peerDependenciesMeta": { | ||
| "react": { | ||
| "optional": true | ||
| } | ||
| }, | ||
| "devDependencies": { | ||
| "@tanstack/vite-config": "0.4.3", | ||
| "@types/react": "^19.2.0", | ||
| "react": "^19.2.0", | ||
| "vite": "^8.0.0", | ||
| "vite-plugin-solid": "^2.11.11" | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| /** @jsxImportSource solid-js */ | ||
|
|
||
| import { constructCoreClass } from '@tanstack/devtools-utils/solid' | ||
|
|
||
| const [SeoDevtoolsCore] = constructCoreClass(() => import('./solid-panel')) | ||
|
|
||
| export { SeoDevtoolsCore } |
| Back | FazBrowse Home | New Git URL |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality⚠️ Potential issue | 🟠 Major
Don't ship a localhost canonical URL.
Line 37 hard-codes http://localhost:3005, so the published example will canonicalize to the wrong origin outside local dev. That gives crawlers — and this new SEO tab — a false signal. Use the deployed example URL here, or drop the canonical tag from this fixture.
🤖 Prompt for AI AgentsSorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.