Problem
Heading hierarchy skips a level
src/components/Header.tsx:163
<h1>A beautiful, responsive, customizable, accessible (WAI-ARIA) replacement for JavaScript's popup boxes</h1>
<h2>Zero dependencies</h2>
<h2> is used for a two-word tagline, and then every top-level section jumps straight to <h3>:
| Component |
Heading |
Examples.tsx |
<h3 id="examples"> |
Installation.tsx |
<h3 id="download">, <h3 id="usage">, <h3 id="frameworks-integrations"> |
Themes.tsx |
<h3 id="themes"> |
ConfigurationParams.tsx |
<h3 id="configuration"> |
DeclarativeTemplates.tsx |
<h3 id="declarative-templates"> |
HandlingButtons.tsx |
<h3 id="handling-buttons"> |
HandlingDismissals.tsx |
<h3 id="handling-dismissals"> |
Icons.tsx |
<h3 id="icons"> |
InputTypes.tsx |
<h3 id="input-types"> |
Methods.tsx |
<h3 id="methods"> |
Sponsors.tsx |
<h3 id="sponsors">, <h3 id="nsfw-sponsors"> |
So the document outline is h1 → h2(tagline) → h3 → h4, with no h2 for any actual section. Also worth noting <h4> is used for individual option/method names inside table cells (~70 of them), which makes the outline very flat and repetitive.
Fix: promote all section <h3> to <h2>, promote the in-table <h4> to <h3>, and either drop the "Zero dependencies" <h2> or make it a <p class="tagline">.
Recipe pages have almost no indexable text
recipe-gallery/colored-toasts.tsx is representative of all 21:
<Nav recipeGallery />
<Prtnr />
<h1>Colored Toasts</h1>
<Sandpack files={{ '/App.ts': src, '/styles.css': styles }} previewHeight={250} />
That's it — an <h1> plus a Sandpack editor. The code itself is pulled in via ?raw imports into the JS bundle, so it isn't crawlable HTML either. Each recipe page is a thin page: 2–4 words of unique text.
Fix: give each recipe 1–3 paragraphs — what problem it solves, when to reach for it, what the key options do, and a link to the relevant Configuration Params anchors. Also render the source code in a plain <pre><code> block (crawlable) in addition to / instead of only the Sandpack embed. This also fixes the empty meta descriptions in the meta-tags issue.
All docs live at hash anchors on one page
Every doc section is a fragment of /: /#configuration, /#methods, /#icons, /#input-types. Fragments are not separate URLs to Google — the entire documentation competes as a single result. A search for sweetalert2 inputValidator or sweetalert2 preConfirm has no dedicated page to rank.
Fix (larger, worth discussing separately): split the docs into real pages — /configuration/, /methods/, /icons/, /input-types/ — keeping the anchors as in-page deep links. The build already supports multiple entries via rolldownOptions.input.
No breadcrumbs or lateral internal links
Recipe pages link only back to /recipe-gallery/. There's no "related recipes", no links from a recipe into the relevant Configuration Params anchor, and no visible breadcrumb trail. Weak internal linking limits how PageRank flows to the 21 recipe pages.
Impact
Medium-high — the thin-recipe-pages part is the most actionable, and pairs naturally with writing real meta descriptions.
Problem
Heading hierarchy skips a level
src/components/Header.tsx:163<h2>is used for a two-word tagline, and then every top-level section jumps straight to<h3>:Examples.tsx<h3 id="examples">Installation.tsx<h3 id="download">,<h3 id="usage">,<h3 id="frameworks-integrations">Themes.tsx<h3 id="themes">ConfigurationParams.tsx<h3 id="configuration">DeclarativeTemplates.tsx<h3 id="declarative-templates">HandlingButtons.tsx<h3 id="handling-buttons">HandlingDismissals.tsx<h3 id="handling-dismissals">Icons.tsx<h3 id="icons">InputTypes.tsx<h3 id="input-types">Methods.tsx<h3 id="methods">Sponsors.tsx<h3 id="sponsors">,<h3 id="nsfw-sponsors">So the document outline is h1 → h2(tagline) → h3 → h4, with no h2 for any actual section. Also worth noting
<h4>is used for individual option/method names inside table cells (~70 of them), which makes the outline very flat and repetitive.Fix: promote all section
<h3>to<h2>, promote the in-table<h4>to<h3>, and either drop the "Zero dependencies"<h2>or make it a<p class="tagline">.Recipe pages have almost no indexable text
recipe-gallery/colored-toasts.tsxis representative of all 21:That's it — an
<h1>plus a Sandpack editor. The code itself is pulled in via?rawimports into the JS bundle, so it isn't crawlable HTML either. Each recipe page is a thin page: 2–4 words of unique text.Fix: give each recipe 1–3 paragraphs — what problem it solves, when to reach for it, what the key options do, and a link to the relevant Configuration Params anchors. Also render the source code in a plain
<pre><code>block (crawlable) in addition to / instead of only the Sandpack embed. This also fixes the empty meta descriptions in the meta-tags issue.All docs live at hash anchors on one page
Every doc section is a fragment of
/:/#configuration,/#methods,/#icons,/#input-types. Fragments are not separate URLs to Google — the entire documentation competes as a single result. A search forsweetalert2 inputValidatororsweetalert2 preConfirmhas no dedicated page to rank.Fix (larger, worth discussing separately): split the docs into real pages —
/configuration/,/methods/,/icons/,/input-types/— keeping the anchors as in-page deep links. The build already supports multiple entries viarolldownOptions.input.No breadcrumbs or lateral internal links
Recipe pages link only back to
/recipe-gallery/. There's no "related recipes", no links from a recipe into the relevant Configuration Params anchor, and no visible breadcrumb trail. Weak internal linking limits how PageRank flows to the 21 recipe pages.Impact
Medium-high — the thin-recipe-pages part is the most actionable, and pairs naturally with writing real meta descriptions.