Panduan SolidJS SEO
cara membuat SolidJS situs dapat di-crawl, dapat diindeks, dan fast — mengapa bare SolidJS adalah CSR-hanya, bagaimana SolidStart's SSR/SSG memperbaiki ini, managing head tags dengan @solidjs/meta, dan mengapa SolidJS hydrates (ini adalah tidak resumable like Qwik).
SolidJS adalah sebuah fast, React-like library dengan fine-grained reactivity dan Tidak virtual DOM — tetapi pada -nya own ini adalah client-side dirender, so ini ships sebuah empty HTML shell dengan yang sama pengindeksan masalah sebagai bare React. perbaiki adalah SolidStart, official meta-kerangka kerja: SSR atau SSG put nyata konten dan metadata di pertama respons. Manage head tags dengan @solidjs/meta (<Title>, <Meta>, <Link>), kembalikan nyata 404s dengan <HttpStatusCode>, dan fetch data pada server dengan createAsync. Satu hal tidak untuk mix up: SolidJS hydrates — ini adalah tidak resumable. Resumability adalah Qwik's trick. SolidJS's win adalah sebuah Core Web Vitals edge pada top dari standard SSR.
Bukti untuk klaim ini The article's described solidjs-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Cakupan: Platform-specific capability documentation. Tingkat keyakinan: tinggi · Diverifikasi: SolidStart documentation Bukti untuk klaim ini Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Cakupan: Google requirements independent of platform. Tingkat keyakinan: tinggi · Diverifikasi: Google Search Central: SEO Starter GuideTL;DR — SolidJS adalah sebuah fast, React-like library, tetapi pada -nya own ini membangun halaman di Anda browser — so mesin pencari pertama see sebuah empty shell. perbaiki adalah SolidStart, -nya official penuh-stack alat, yang mengirim finished HTML untuk keduanya pengguna dan crawler. rendering mode adalah sebuah per-route setting, tidak sebuah seluruh-situs switch — gunakan server rendering (SSR atau SSG) pada routes itu perlu untuk peringkat, set Anda judul dan meta tags dengan @solidjs/meta, dan verify setiap route’s sebenarnya HTML output alih-alih assuming seluruh situs adalah covered.
Apa SolidJS adalah
SolidJS adalah sebuah JavaScript library untuk membangun pengguna interfaces. jika Anda’ve seen React, ini’ll look familiar — ini menggunakan yang sama JSX syntax dan sebuah similar component style. big perbedaan di bawah hood adalah itu SolidJS memiliki Tidak virtual DOM: ini memperbarui tepat pieces dari halaman itu perubahan, yang membuat ini very fast.
catch untuk SEO: oleh default, SolidJS adalah client-side dirender (CSR). server mengirim sebuah hampir-empty HTML file, lalu Anda browser downloads JavaScript dan membangun halaman. itu’s sebuah masalah karena pertama hal sebuah penelusuran mesin sees adalah empty versi — Tidak text, Tidak judul, Tidak deskripsi meta.
Mengapa CSR adalah sebuah SEO masalah
Ketika Google melakukan crawl sebuah CSR halaman, ini sees empty shell pertama. ini dapat come back kemudian, jalankan JavaScript, dan baca nyata konten — tetapi itu kedua lulus dapat take anywhere dari hours untuk weeks. Worse, Bing dan social-media crawler (Facebook, LinkedIn, X) sering jangan jalankan JavaScript di semua, so mereka dapat tidak pernah see Anda konten atau Anda share previews.
ini adalah yang sama issue bare React, Vue, dan Angular memiliki. ini adalah tidak unique untuk SolidJS — ini adalah sebuah property dari rendering sisi klien. (See JavaScript SEO untuk penuh picture.)
perbaiki: SolidStart
SolidStart adalah official meta-kerangka kerja untuk SolidJS — think dari ini sebagai SolidJS’s versi dari Berikutnya.js (untuk React) atau Nuxt (untuk Vue). ini lets server kirim finished HTML, so mesin pencari dan social crawler mendapatkan Anda konten pada very pertama permintaan. Dua main modes:
- SSR (rendering sisi server) — halaman adalah dibangun pada server setiap time ini adalah requested. baik untuk konten itu perubahan sering.
- SSG (static situs generation) — halaman adalah dibangun setelah di deploy time dan disajikan sebagai plain files. Fastest option; ideal untuk blogs, docs, dan marketing halaman.
Setting Anda judul dan meta tags
untuk control Anda <title>, deskripsi meta, dan social share tags, gunakan
@solidjs/meta package. ini memberikan Anda <Title>, <Meta>, dan <Link>
components Anda drop ke Anda halaman — SolidJS’s equivalent dari React Helmet. dengan
SolidStart’s SSR turned pada, itu tags tampilkan up di HTML itu crawler baca.
satu hal tidak untuk mix up
Anda dapat hear SolidJS lumped di dengan Qwik sebagai “the resumable frameworks.” (terjemahan) “ resumable kerangka kerja.” itu’s wrong. Resumability adalah Qwik’s idea. SolidJS menggunakan ordinary hydration — ini hanya melakukan ini lebih cheaply daripada React. untuk SEO itu pembedaan barely penting (keduanya put konten di HTML), tetapi ini adalah sebuah umum mistake.
ingin nyata mechanics — SSR vs. SSG vs. streaming, @solidjs/meta API, nyata 404s, server-side data fetching, dan Core Web Vitals story? Switch untuk Advanced tab.
Bukti untuk klaim ini The article's described solidjs-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Cakupan: Platform-specific capability documentation. Tingkat keyakinan: tinggi · Diverifikasi: SolidStart documentation Bukti untuk klaim ini Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Cakupan: Google requirements independent of platform. Tingkat keyakinan: tinggi · Diverifikasi: Google Search Central: SEO Starter GuideTL;DR — SolidJS adalah fine-grained reactive (sinyal, Tidak virtual DOM) dan ships sebagai sebuah CSR library oleh default — sebuah empty shell dengan yang sama Wave-1 pengindeksan masalah sebagai bare React. SolidStart adalah perbaiki: SSR, SSG (route prerendering), dan streaming SSR put konten dan metadata di pertama respons. Manage head tags dengan @solidjs/meta (
<Title>,<Meta>,<Link>di bawah sebuah<MetaProvider>), kembalikan nyata kode status dengan<HttpStatusCode>, dan muat data pada server dengancreateAsyncso ini lands di SSR HTML. accuracy spine: SolidJS hydrates — ini adalah Tidak resumable (itu’s Qwik). -nya fine-grained reactivity adalah sebuah client perbarui optimization, tidak sebuah server-untuk-client startup satu — so SEO upside adalah mostly sebuah Core Web Vitals (INP/TBT) edge layered pada top dari wajar SSR.
SolidJS architecture: apa sebenarnya berbeda
SolidJS menggunakan JSX itu looks identical untuk React’s, plus hooks-like primitives
(createSignal, createEffect, createMemo). tetapi execution model adalah
fundamentally berbeda:
- React re-berjalan seluruh component function ketika state perubahan dan diffs sebuah virtual DOM untuk decide apa untuk perbarui.
- SolidJS compiles JSX untuk nyata DOM operations di bangun time. Components jalankan setelah; reactive sinyal wire nilai secara langsung untuk spesifik DOM nodes itu bergantung pada them. Ketika sebuah sinyal perubahan, Solid memperbarui hanya itu node — Tidak reconciliation, Tidak virtual DOM overhead.
ini adalah mengapa SolidJS consistently sits near top dari js-kerangka kerja-benchmark suite, dan mengapa -nya runtime adalah dramatically leaner daripada React’s re-render model. library itself adalah roughly 7KB gzipped. Lebih kecil, surgical memperbarui plus sebuah tiny runtime adalah performa story — tetapi none dari itu perubahan rendering mode, yang adalah apa decides Anda SEO fate.
CSR oleh default: SEO masalah
bangun dengan SolidJS alone (Tidak SolidStart) dan Anda mendapatkan sebuah client-side-dirender app:
- server mengirim
index.htmldengan sebuah near-empty body — typically sebuah<div id="root"></div>dan sebuah script tag. - browser downloads JS bundle, berjalan Solid’s reactive code, dan populates DOM.
- Googlebot’s pertama wave sees empty shell — tanpa konten, Tidak metadata.
- Googlebot’s kedua wave ( rendering queue) eventually berjalan JS dan sees konten — tetapi timing adalah unpredictable, dari hours untuk weeks.
- Bing, social crawler, dan non-JS bot dapat tidak pernah see konten di semua.
ini adalah dua-wave rendering proses, dan ini adalah yang sama trap apa pun CSR SPA falls ke. practical impacts: slow awal pengindeksan dari baru konten; judul dan deskripsi meta missing dari mentah HTML (so wrong/blank snippets di SERPs); dan soft 404s, karena sebuah CSR app dapat’t mengembalikan benar HTTP 404 — server selalu jawaban 200 dengan app shell.
SolidStart: perbaiki
SolidStart (1,0, stable) adalah official SolidJS meta-kerangka kerja, dibangun pada Vinxi (Vite + Nitro). ini menyediakan:
- Isomorphic, file-based routing — files di bawah
src/routes/map untuk URLs (src/routes/blog/[slug].tsx→/blog/:slug). Satu correction worth menjadi precise tentang: SolidStart itself melakukan tidak ship sebuah router atau metadata library bundled di — per -nya own docs, “SolidStart itself melakukan tidak ship dengan a Router atau Metadata library. Rather, it leaves itu open untuk Anda untuk gunakan any library Anda ingin.” (terjemahan) “SolidStart itself melakukan tidak ship dengan sebuah Router atau Metadata library. Rather, ini leaves itu open untuk Anda untuk gunakan apa pun library Anda ingin.” routing dan@solidjs/metaperilaku described di sini come dari menambahkan@solidjs/routerdan@solidjs/metaexplicitly ( official templates tambahkan keduanya untuk Anda, yang adalah mengapa ini dapat feel automatic — periksa Andapackage.jsonalih-alih assuming mereka came free dengan kerangka kerja). - Multiple rendering modes, chosen per route: CSR, SSR (synchronous, asynchronous, atau streaming), dan SSG / route prerendering. sebuah SolidStart project tidak “SSR” (terjemahan) “SSR” atau “CSR” (terjemahan) “CSR” sebagai sebuah seluruh — setiap route picks -nya own mode, so verify rendering config (dan resulting HTML) untuk spesifik route Anda care tentang alih-alih assuming seluruh situs inherited satu setting.
- server functions — sebuah
"use server"directive untuk RPC-style server code (data fetching, database access). - Adapters untuk Cloudflare, Vercel, Netlify, Deno, Node, dan static hosting.
versi note: ini reflects SolidStart 1,0’s saat ini documentation, yang labels itself beta dan adalah terakhir diperbarui 2026-04-28 — konfirmasi detail terhadap docs untuk versi Anda’re sebenarnya berjalan sebelum treating apa pun dari ini sebagai permanent API surface.
SSR vs. SSG vs. streaming — SEO baca
- SSR (synchronous, asynchronous, atau streaming — SolidStart names ini sebagai distinct sub-modes) delivers penuh konten pada pertama permintaan dan adalah fully dapat diindeks pada Wave 1. Best untuk frequently mengubah halaman.
- SSG (route prerendering) membangun HTML di deploy time — fastest TTFB dan
LCP, CDN-cacheable, Tidak per-permintaan server berfungsi. Best untuk blogs, docs, dan
marketing halaman. Configure prerendered routes di
app.config.ts:
// app.config.ts
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({
server: {
prerender: {
routes: ["/", "/about", "/blog"],
},
},
});- Streaming SSR mengirim HTML progressively untuk meningkatkan TTFB pada data-berat halaman; Google renders penuh streamed output.
- CSR adalah fine untuk authenticated dashboards dan alat itu jangan perlu untuk peringkat — tidak untuk publik konten.
Managing head tags dengan @solidjs/meta
@solidjs/meta package adalah SolidJS equivalent dari React Helmet atau
Berikutnya.js’s <Head>. ini adalah SSR-ready dan asynchronous. Wrap Anda app di
<MetaProvider> so tags adalah collected selama SSR, lalu set per-halaman tags di dalam
Anda route components:
// src/routes/about.tsx
import { Title, Meta, Link } from "@solidjs/meta";
export default function AboutPage() {
return (
<>
<Title>About Us — My Site</Title>
<Meta name="description" content="Learn more about us." />
<Link rel="canonical" href="https://example.com/about" />
<Meta property="og:title" content="About Us" />
<Meta property="og:description" content="Learn more about us." />
<Meta property="og:image" content="https://example.com/og-about.jpg" />
<main>...</main>
</>
);
}components tersedia adalah <Title>, <Meta>, <Link>, <Style>,
<Base>, dan <MetaProvider> wrapper. Deduplication adalah dibangun di:
<Meta> tags dengan matching name attributes override parent definitions —
deepest (sebagian besar spesifik) satu wins, dan ini berfungsi correctly selama SSR. So sebuah root
default judul dan per-halaman overrides behave sebagai Anda’d expect.
Satu warning straight dari docs: jangan tambahkan mentah <title> tags di Anda
server files — mereka override @solidjs/meta’s functionality. selalu gunakan
<Title> component, tidak pernah sebuah hand-ditulis HTML judul di Anda server template.
data terstruktur (JSON-LD)
Google mendukung JSON-LD apakah ini adalah di mentah HTML atau injected oleh JavaScript, tetapi SSR-dirender JSON-LD adalah reliable pilihan. di SolidStart, render ini di route component:
export default function ArticlePage() {
const schema = {
"@context": "https://schema.org",
"@type": "Article",
"headline": "My Article",
"author": { "@type": "Person", "name": "Author Name" },
};
return (
<>
<script
type="application/ld+json"
innerHTML={JSON.stringify(schema)}
/>
<article>...</article>
</>
);
}dengan SSR enabled, JSON-LD muncul di server-dirender HTML — preferred approach untuk reliability di seluruh setiap crawler. Validate dengan Rich hasil Test atau pemeriksaan URL alat.
Hydration, tidak resumability — accuracy spine
Hydration adalah proses di mana, setelah SSR delivers dirender HTML,
kerangka kerja attaches untuk existing DOM untuk membuat ini interactive: download JS
bundle, execute kerangka kerja code, reconcile state dengan existing nodes,
attach event listeners. SolidJS menggunakan hydration — yang sama fundamental mechanism
sebagai React’s hydrate, Vue’s createSSRApp, atau Angular SSR.
Resumability (Qwik’s architecture) adalah berbeda: server serializes kerangka kerja’s execution state ke HTML, dan client resumes dari di sana tanpa re-executing components — interactive sebelum apa pun JS berjalan.
myth untuk debunk: SolidJS’s fine-grained reactivity adalah sometimes confused dengan resumability karena keduanya hindari “re-berjalan” (terjemahan) “re-berjalan” components di tradisional sense. mereka adalah tidak yang sama hal. Fine-grained reactivity adalah sebuah client-side perbarui optimization; resumability adalah sebuah server-untuk-client startup mechanism. SolidJS masih downloads dan berjalan -nya runtime sebelum halaman adalah interactive.
SEO implication: keduanya SSR+hydration (SolidJS) dan resumability (Qwik) put dirender HTML di server respons, so keduanya adalah baik untuk pengindeksan. perbedaan adalah Time untuk Interactive dan INP pada slow devices, di mana Qwik’s near-zero startup JS memiliki edge. untuk crawl dan indeks, SolidStart SSR adalah sudah cukup.
Core Web Vitals
SolidJS’s runtime advantages dapat translate ke better Core Web Vitals scores pada routes itu gunakan SSR — tetapi ini tidak automatic atau universal. Tidak utama sumber establishes guaranteed cheap hydration atau better outcomes untuk setiap Solid/SolidStart route: bundle size, data fetching, ketiga-party scripts, device, dan route’s sebenarnya rendering mode semua determine nyata cost. Treat berikut sebagai mechanism oleh yang SolidJS dapat help, dan mengukur Anda own routes untuk konfirmasi ini melakukan:
- LCP improves karena largest konten element adalah di server-dirender HTML — Tidak menunggu pada JS.
- INP improves karena Solid’s fine-grained runtime menangani interactions efficiently (Tidak virtual DOM diffing).
- CLS drops karena SSR’d konten tidak shift sebagai late-memuat JS fills di.
sebuah caution worth mempertahankan honest: figures like “SolidJS adalah ~70% lebih cepat daripada React’s virtual DOM” (terjemahan) “SolidJS adalah ~70% lebih cepat daripada React’s virtual DOM” come dari synthetic benchmarks (js-kerangka kerja-benchmark), tidak dunia nyata data lapangan. nyata CWV bergantung far lebih pada implementation quality, data fetching, dan hosting daripada pada kerangka kerja pilihan. Treat benchmark angka sebagai directional, dan mengukur Anda own data lapangan di CrUX / Search Console.
Routing, data fetching, dan nyata 404s
Routing. SolidStart menggunakan History API oleh default — tidak pernah gunakan
hash-based (#/page) routing, yang mencegah reliable URL penemuan. pertahankan
trailing-slash perilaku consistent dan enforce ini dengan server redirects, tidak
hanya canonicals.
data fetching untuk SEO. konten itu perlu untuk peringkat harus menjadi dimuat pada
server so ini adalah di SSR HTML. gunakan createAsync dan server functions — tidak
onMount atau client-side effects, yang jalankan setelah HTML adalah dikirim:
// Server-side data fetch — content lands in the initial HTML ✓
import { createAsync } from "@solidjs/router";
import { getPost } from "~/lib/api";
export const route = {
load: ({ params }) => getPost(params.slug),
};
export default function BlogPost(props) {
const post = createAsync(() => getPost(props.params.slug));
return <article>{post()?.content}</article>;
}nyata 404s. sebuah catch-semua route plus <HttpStatusCode> dari @solidjs/start
sets sebenarnya HTTP kode respons pada server — sebuah benar 404 alih-alih sebuah soft
404:
// src/routes/[...404].tsx
import { HttpStatusCode } from "@solidjs/start";
export default function NotFound() {
return (
<>
<HttpStatusCode code={404} />
<h1>Page Not Found</h1>
</>
);
}Sitemaps, robots.txt, dan SEO internasional
- robots.txt — tambahkan
public/robots.txtdi project root dan poin ini di Anda sitemap. jangan block/api/routes digunakan untuk XHR data fetching. - Sitemap — ketiga-party
solid-start-sitemapplugin (oleh madaxen86) generatessitemap.xmldi bangun time dan mendukung dynamic routes melalui parameter mapping atau sebuah runtime API route. - SEO internasional — emit hreflang dengan
<Link rel="alternate" hreflang="…">dari @solidjs/meta, dan gunakan subdirectory structure (/en/,/fr/) di atas subdomains atau kueri parameters.
umum SolidJS SEO pitfalls
- Berjalan SolidJS CSR tanpa SolidStart SSR/SSG.
- Fetching rankable konten di
onMount/ client-side effects. - Forgetting
<MetaProvider>wrapper (tags tidak akan render di SSR). - menambahkan mentah
<title>HTML tags di server templates (overrides @solidjs/meta). - menggunakan hash-based routing.
- Serving soft 404s tanpa
<HttpStatusCode>. - Blocking API routes di robots.txt.
- Tidak fingerprinting JS assets (Google caches scripts aggressively).
- konten behind sebuah click/accordion/tab itu tidak pernah auto-memuat ke DOM.
- Assuming SSR berfungsi tanpa verifying melalui View Sumber / pemeriksaan URL.
- Assuming
@solidjs/routerdan@solidjs/metacome bundled dengan SolidStart — mereka jangan; SolidStart’s own docs say ini “melakukan tidak ship dengan a Router atau Metadata library.” (terjemahan) “melakukan tidak ship dengan sebuah Router atau Metadata library.” Official templates tambahkan keduanya untuk Anda, tetapi sebuah dari-scratch atau customized setup perlu them installed explicitly. - Treating sebuah project sebagai uniformly “SSR” (terjemahan) “SSR” atau “CSR” (terjemahan) “CSR” — rendering mode adalah set per route di SolidStart, so sebuah route Anda assume adalah server-dirender dapat tidak menjadi.
Di mana ini sits
SolidJS lives di JavaScript kerangka kerja subcluster alongside Qwik, di bawah lebih luas JavaScript SEO cluster. untuk closest parallel, see React SEO — SolidJS shares React’s JSX dan CSR-oleh-default masalah, tetapi memperbaiki ini dengan SolidStart alih-alih Berikutnya.js, dan berjalan lebih cepat thanks untuk Tidak virtual DOM. untuk bagaimana Google sees dirender konten, see rendering dan crawling.
AI summary
sebuah condensed take pada Advanced versi:
- SolidJS = fine-grained reactivity, Tidak virtual DOM. Components jalankan setelah; sinyal perbarui hanya tepat DOM nodes itu perubahan. Tiny runtime (~7KB), consistently near top dari js-kerangka kerja-benchmark, lebih cepat daripada React’s re-render model.
- Bare SolidJS adalah CSR oleh default — sebuah empty HTML shell. sama Wave-1 pengindeksan masalah sebagai bare React/Vue/Angular: Googlebot’s pertama wave sees tanpa konten, rendering adalah queued (hours untuk weeks), dan Bing/social crawler dapat tidak pernah see ini. Soft-404 risk too (CSR dapat’t mengembalikan nyata 404).
- SolidStart adalah perbaiki, per route — official meta-kerangka kerja offers CSR, SSR (sync, async, atau streaming), dan SSG per route; ini tidak default seluruh project untuk SSR. SSR/SSG routes put konten + metadata di pertama respons, fully dapat diindeks pada Wave 1 — verify spesifik route alih-alih assuming situs-wide coverage.
- Router dan metadata tidak auto-bundled. SolidStart’s own docs say ini
ships tanpa sebuah router atau metadata library —
@solidjs/routerdan@solidjs/metaadalah jelas additions official templates happen untuk sertakan. - Head tags melalui @solidjs/meta:
<Title>,<Meta>,<Link>di bawah<MetaProvider>; deduplication berfungsi di SSR; tidak pernah gunakan mentah<title>di server files. - nyata 404s dengan
<HttpStatusCode>; server-side data dengancreateAsync(tidakonMount); History API routing (Tidak hash routes); JSON-LD dirender di route component. - Accuracy spine: SolidJS hydrates — ini adalah Tidak resumable. Resumability adalah Qwik’s. Fine-grained reactivity adalah sebuah client-perbarui optimization, tidak sebuah startup satu. Keduanya SSR+hydration dan resumability adalah baik untuk pengindeksan; Qwik hanya wins pada Time untuk Interactive.
- CWV upside adalah mungkin, tidak guaranteed (pada SSR’d routes): better LCP, INP, dan CLS adalah plausible outcomes — tetapi benchmark gaps adalah synthetic, dan nyata data lapangan bergantung pada implementation, data, dan hosting, tidak kerangka kerja pilihan alone.
Dokumentasi resmi
Utama-sumber documentation dari Google dan SolidJS team.
Google — JavaScript SEO
- memahami JavaScript SEO Basics — crawl → render → indeks pipeline dan dua-wave proses.
- Dynamic rendering sebagai sebuah Workaround — mengapa Google deprecated dynamic rendering di favor dari SSR, static rendering, dan hydration.
- SEO Guide untuk Web Developers — developer-facing fundamentals.
SolidJS / SolidStart
- SolidJS documentation — official docs home.
- Fine-Grained Reactivity — sinyal model dan bagaimana memperbarui target individual DOM nodes.
- SolidStart — meta-kerangka kerja: SSR, streaming, routing, server functions.
- SolidStart — Head dan Metadata — managing judul/meta/tautan tags untuk SEO.
- SolidStart — Route Pre-rendering — configuring SSG.
@solidjs/meta
- solid-meta GitHub repository — sumber dan API reference.
- @solidjs/meta pada npm — package.
- judul component docs dan Meta component docs.
Quotes dari sumber
pada—record statements dari Google pada JavaScript SEO, plus SolidJS team’s own framing.
Google — bagaimana JavaScript apps adalah processed
- “Google memproses JavaScript web apps di three main phases: 1. Crawling 2. Rendering 3. Indexing.” (terjemahan) “Google memproses JavaScript web apps di three main phases: 1. crawling 2. rendering 3. pengindeksan.” — Google Search Central. memahami JavaScript SEO Basics
- “ini fine untuk gunakan JavaScript untuk inject links menjadi itu DOM, sebagai long sebagai such links follow itu best practices untuk crawlable links.” (terjemahan) “ini adalah fine untuk gunakan JavaScript untuk inject tautan ke DOM, sebagai panjang sebagai such tautan ikuti best practices untuk dapat di-crawl tautan.”
— Google Search Central (gunakan
<a href>, tidakonclickataujavascript:void(0)). memahami JavaScript SEO Basics - “Anda tidak seharusnya gunakan JavaScript untuk ubah itu canonical URL untuk sesuatu else daripada itu URL Anda specified sebagai itu canonical URL di itu original HTML.” (terjemahan) “Anda tidak seharusnya gunakan JavaScript untuk perubahan canonical URL untuk sesuatu else daripada URL Anda specified sebagai canonical URL di original HTML.” — Google Search Central. memahami JavaScript SEO Basics
- “Use the History API to implement routing between different views of your web app.” (terjemahan) “gunakan History API untuk implement routing antara berbeda views dari Anda web app.” — Google Search Central (i.e. Tidak fragment/hash routing). memahami JavaScript SEO Basics
SolidJS team — fine-grained reactivity (paraphrased framing)
- SolidStart’s head-dan-metadata docs warn: “Menjadi sure untuk avoid adding any wajar
<title />tags di any server files, sebagai they akan override itu functionality dari @solidjs/meta.” (terjemahan) “menjadi sure untuk hindari menambahkan apa pun wajar tidak terdefinisi tags di apa pun server files, sebagai mereka akan override functionality dari @solidjs/meta.” SolidStart — Head dan Metadata
SolidJS SEO checklist
sebuah lulus untuk konfirmasi sebuah SolidJS situs adalah dapat di-crawl, dapat diindeks, dan fast:
- Anda’re menggunakan SolidStart dengan SSR atau SSG — tidak bare SolidJS di CSR mode.
- View Sumber menampilkan nyata konten dan
<a href>tautan di mentah HTML — tidak hanya<div id="root"></div>. - App adalah wrapped di
<MetaProvider>so head tags render selama SSR. -
<Title>dan<Meta name="description">set per route melalui @solidjs/meta. - Tidak mentah
<title>tags di server files (mereka override @solidjs/meta). - Open Graph + Twitter tags present melalui
<Meta property="og:…">so social previews berfungsi. - Canonical set dengan
<Link rel="canonical">(tidak changed melalui JS setelah muat). - Routing menggunakan History API — Tidak hash (
#/page) routes. - Rankable konten dimuat dengan
createAsync/server functions, tidakonMount. - Missing halaman mengembalikan nyata 404 melalui
<HttpStatusCode code={404} />. -
public/robots.txtada, poin untuk sitemap, dan tidak block/api/data routes. - sitemap XML generated (e.g.
solid-start-sitemap) dengan canonical URLs. - JSON-LD dirender di route component dan present di SSR HTML.
- pemeriksaan URL (Search Console) mengonfirmasi dirender HTML matches.
- Field Core Web Vitals diperiksa di CrUX / Search Console, tidak hanya lab.
mental models
1. Library vs. meta-kerangka kerja. SolidJS ( library) decides bagaimana UI memperbarui; SolidStart ( meta-kerangka kerja) decides di mana ini renders. SEO adalah governed oleh kedua satu. Bare SolidJS = CSR = empty shell. SolidStart SSR/SSG = konten di HTML. selalu locate yang satu Anda’re sebenarnya shipping.
2. rendering-mode ladder. untuk apa pun route, pick highest rung konten memungkinkan: SSG (static, fastest, best untuk stable konten) → SSR (dynamic, per-permintaan) → streaming SSR (data-berat) → CSR (hanya untuk non-peringkat, authenticated views). Lebih tinggi rungs adalah better untuk keduanya crawler dan Core Web Vitals.
3. Dua waves, satu goal. Google melakukan crawl di Wave 1 (mentah HTML) dan renders di Wave 2 (queued). entire poin dari SolidStart SSR adalah untuk membuat Anda konten menyelesaikan di Wave 1 so Anda tidak pernah bergantung pada unpredictable Wave 2 queue.
4. Hydration ≠ resumability. SolidJS hydrates (download → execute → attach). Qwik resumes (Tidak re-execution). Fine-grained reactivity speeds memperbarui setelah hydration; ini tidak hapus hydration. pertahankan ini straight dan Anda’ll tidak pernah miscategorize SolidJS.
5. server-muat untuk apa pun itu harus peringkat.
jika konten adalah fetched di onMount, ini lands setelah HTML adalah dikirim — invisible
untuk Wave 1. Fetch ini dengan createAsync/server functions so ini adalah baked ke
SSR respons.
SolidJS SEO — cheat sheet
SolidJS vs. SolidStart
| SolidJS (library) | SolidStart (meta-kerangka kerja) | |
|---|---|---|
| Default rendering | CSR (empty shell) | SSR (konten di HTML) |
| rendering modes | CSR hanya | SSR, SSG, streaming, CSR |
| Meta tags di mentah HTML | Tidak (set client-side) | Ya (@solidjs/meta + SSR) |
| nyata HTTP 404 | Tidak (soft 404) | Ya (<HttpStatusCode>) |
| Sitemap generation | Manual | solid-start-sitemap plugin |
| SEO verdict (per route) | Risky unless Anda bangun di SSR/SSG yourself | dapat menjadi SEO-viable — verify setiap route’s sebenarnya rendering mode dan output; SolidStart tidak jaminan ini situs-wide |
@solidjs/meta components
| Component | Sets |
|---|---|
<MetaProvider> | Wrapper itu collects tags selama SSR (diperlukan) |
<Title> | <title> |
<Meta> | deskripsi, robots, OG, Twitter cards |
<Link> | canonical, hreflang, preload, stylesheets |
<Style> / <Base> | inline <style> / <base> |
melakukan / jangan
- ✅ gunakan
<Title>dari @solidjs/meta. ❌ Mentah<title>di server files. - ✅ History API routing. ❌ Hash (
#/page) routing. - ✅
createAsync/ server functions untuk rankable data. ❌onMountfetch. - ✅
<HttpStatusCode code={404} />. ❌ soft 404 (200 + shell).
Myth-busting
- ❌ “SolidJS is resumable like Qwik.” (terjemahan) “SolidJS adalah resumable like Qwik.” → ini hydrates (cheaply); hanya Qwik resumes.
- ❌ “SolidJS is bad for SEO.” (terjemahan) “SolidJS adalah buruk untuk SEO.” → Bare CSR adalah; SolidStart SSR/SSG adalah fully dapat diindeks.
- ❌ “Google can’t read SolidJS.” (terjemahan) “Google dapat’t baca SolidJS.” → ini dapat (modern Chromium); risk adalah Wave-2 delay, dihapus oleh SSR.
SolidJS SEO mistakes untuk hindari
Shipping publik konten dengan bare SolidJS CSR
Mengapa ini adalah wrong: pertama respons adalah sebuah app shell, so crawler melakukan tidak menerima halaman’s konten atau metadata immediately. melakukan ini alih-alih: gunakan SolidStart SSR atau route prerendering untuk setiap publik route itu perlu untuk peringkat.
Fetching rankable data di onMount
Mengapa ini adalah wrong: onMount berjalan setelah server respons, leaving konten out
dari mentah HTML. melakukan ini alih-alih: fetch dengan createAsync, route loaders, atau server
functions so data adalah present selama SSR.
Forgetting MetaProvider atau menambahkan sebuah mentah judul
Mengapa ini adalah wrong: Tanpa MetaProvider, @solidjs/meta cannot collect tags untuk SSR;
sebuah mentah <title> di sebuah server file dapat override -nya output. melakukan ini alih-alih: wrap
app di MetaProvider dan gunakan <Title>, <Meta>, dan <Link> consistently.
menggunakan hash routes atau soft 404s
Mengapa ini adalah wrong: #/page routes adalah poor penemuan targets, dan sebuah missing halaman
itu mengembalikan HTTP 200 looks like sebuah soft 404. melakukan ini alih-alih: gunakan History API
routes dan set sebuah nyata status dengan <HttpStatusCode code={404} />.
Calling fine-grained reactivity resumability
Mengapa ini adalah wrong: SolidJS masih hydrates; ini melakukan tidak resume server execution state cara Qwik melakukan. melakukan ini alih-alih: deskripsikan Solid’s advantage sebagai efficient client memperbarui, lalu verify sebenarnya server rendering dan field performa.
Trusting SSR tanpa memeriksa respons
Mengapa ini adalah wrong: sebuah route dapat gunakan SolidStart dan masih leave copy, metadata, atau JSON-LD di client-hanya code. melakukan ini alih-alih: inspect View Sumber dan awal network respons setelah setiap rendering atau data-memuat perubahan.
Audit sebuah SolidStart respons dari command line
macOS / Linux — inspect status, metadata, dan body konten
URL="https://example.com/blog/example-post"
curl -sSIL "$URL" | sed -n '1,12p'
curl -sSL "$URL" -o /tmp/solidstart-page.html
grep -Ei '<title>|name="description"|rel="canonical"|<h1|application/ld\+json' \
/tmp/solidstart-page.htmlpertama respons seharusnya menjadi sebuah nyata success status untuk sebuah langsung route, dan mentah HTML seharusnya berisi route’s judul, deskripsi, canonical, H1, dan apa pun JSON-LD tanpa berjalan JavaScript.
Windows PowerShell — jalankan yang sama mentah-HTML periksa
$url = "https://example.com/blog/example-post"
$response = Invoke-WebRequest -Uri $url
$response.StatusCode
$response.Content | Select-String -Pattern '<title>|name="description"|rel="canonical"|<h1|application/ld\+json'periksa sebuah missing route mengembalikan sebuah benar 404
curl -sS -o /dev/null -w '%{http_code}\n' \
'https://example.com/this-route-should-not-exist'
# Expected: 404DevTools Console — list dirender head sinyal
({
title: document.title,
description: document.querySelector('meta[name="description"]')?.content,
canonical: document.querySelector('link[rel="canonical"]')?.href,
h1: [...document.querySelectorAll('h1')].map((node) => node.textContent.trim()),
})Jalankan snippet di browser Console, tetapi bandingkan ini dengan command-line hasil. jika sebuah sinyal ada hanya di dirender DOM, ini adalah masih menjadi ditambahkan setelah awal HTML respons.
mengukur SolidStart SEO performa di lapangan
Largest Contentful Paint oleh route jenis
Metric: Field LCP untuk publik konten, marketing, dan lainnya representative route groups.
Apa ini tells Anda: Apakah largest terlihat konten arrives promptly untuk nyata pengguna; SSR helps hanya jika data, images, dan hosting menyelesaikan path.
cara pull ini: gunakan CrUX atau Search Console Core Web Vitals report, segmented oleh similar URL groups di mana mungkin.
Benchmark / realistic range: gunakan Google’s saat ini field-data classification dan situs’s own pre-rilis baseline; melakukan tidak substitute sebuah synthetic kerangka kerja benchmark untuk pengguna data.
Cadence: Monthly dan setelah sebuah material rendering, hosting, atau image-pengiriman perubahan memiliki accumulated data lapangan.
Interaction untuk Berikutnya Paint
Metric: Field INP pada interactive SolidJS routes.
Apa ini tells Anda: Apakah fine-grained memperbarui translate ke responsive nyata interactions alih-alih hanya favorable library benchmarks.
cara pull ini: gunakan CrUX atau Search Console, lalu reproduce poor halaman groups dengan browser performa tooling untuk temukan panjang interaction.
Benchmark / realistic range: Bandingkan dengan Google’s saat ini classification dan route group’s own baseline; kerangka kerja alone melakukan tidak establish sebuah guaranteed range.
Cadence: Monthly dan setelah menambahkan besar client-side components atau ketiga-party scripts.
Cumulative Layout Shift
Metric: Field CLS untuk SSR dan streaming routes.
Apa ini tells Anda: Apakah hydration, streamed data, images, atau late components move konten setelah awal HTML adalah displayed.
cara pull ini: gunakan CrUX atau Search Console untuk standing KPI dan DevTools untuk diagnosis pada affected templates.
Benchmark / realistic range: gunakan Google’s saat ini field-data classification dan bandingkan baru releases dengan established route baseline.
Cadence: Monthly dan setelah mengubah streaming boundaries, image dimensions, atau client-hanya components.
alat untuk SolidJS SEO
- View halaman Sumber (browser) — fastest SSR periksa. jika Anda konten adalah di
mentah HTML (tidak hanya
<div id="root"></div>), SSR adalah berfungsi. - Google Search Console — pemeriksaan URL — sumber kebenaran untuk apa Googlebot di-crawl dan dirender; “View Tested Halaman → HTML” (terjemahan) “View Tested halaman → HTML” menampilkan dirender output.
- Rich hasil Test — validate JSON-LD data terstruktur pada sebuah SolidStart halaman.
- Bing Webmaster alat — pemeriksaan URL — menampilkan Bing’s dirender versi, penting karena Bing adalah lebih conservative tentang JavaScript daripada Google.
- Ahrefs situs Audit (JS rendering enabled) — crawl sebuah SolidJS situs cara sebuah rendering crawler akan, surfacing missing metadata dan uncrawlable tautan.
solid-start-sitemap— bangun-time sitemap XML generation untuk SolidStart.- CrUX / Search Console Core Web Vitals report — konfirmasi INP/LCP/CLS advantage sebenarnya lands untuk pengguna nyata, tidak hanya di lab.
- DevTools Network tab — inspect awal HTML respons body untuk verify SSR konten (vs. konten injected setelah JS berjalan).
Uji pemahaman Anda: SolidJS SEO
Five quick pertanyaan pada SolidJS, SolidStart, dan getting sebuah Solid situs terindeks. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
My writing
- JavaScript SEO Issues & Best Practices — my definitive guide untuk rendering, DOM parity, dapat di-crawl tautan, dan getting JS-dibangun konten terindeks; foundation sebuah SolidJS situs membangun pada.
- Core Web Vitals: sebuah Menyelesaikan Guide — apa INP, LCP, dan CLS mengukur dan bagaimana mereka factor ke SEO — metrics SolidJS’s runtime helps dengan.
- Beginner’s Guide untuk SEO teknis — di mana rendering dan kerangka kerja pilihan fit di bigger picture.
My speaking
- SMX Advanced 2018: SEO untuk JavaScript Kerangka kerja (SlideShare) — my walkthrough dari bagaimana mesin pencari tangani JS kerangka kerja.
- JavaScript SEO — Ungagged 2019 (SlideShare) — rendering modes, dua-wave proses, dan diagnosis.
dari sekitar industry
- SolidStart — Head dan Metadata — utama-sumber guide untuk @solidjs/meta dan SSR head tags.
- SolidStart — Route Pre-rendering — configuring SSG di
app.config.ts. - SolidJS — Fine-Grained Reactivity — sinyal dan Tidak-virtual-DOM memperbarui straight dari docs.
- Google — memahami JavaScript SEO Basics — Google’s own aturan untuk dapat di-crawl tautan, canonicals, dan rendering pipeline.
- solid-mulai-sitemap plugin — bangun-time sitemap XML generation untuk SolidStart.
- js-kerangka kerja-benchmark (saat ini hasil) — panjang-berjalan benchmark di mana SolidJS sits near top dan ahead dari React pada perbarui-berat berfungsi.
Log perubahan
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.