https://docs.expo.dev/

Page structure & technical metrics

Words

507

Action candidates

14

Images

8

HTML

199 KB

Copy

Title chars
18
Meta chars
86
H1
1
H2
8

Action

Primary

Get started

Forms
1/ 2 fields
On-site links
44
Off-site links
32

Security & metadata

HTTPS
yes
HSTS
no
CSP
no
nosniff
yes
viewport
yes
Icon
yes
JSON-LD
yes
Analytics
no

Page

Next.js / Tailwind

Scripts
15 ext / 4 inline
Alt
8 missing
Lang
en
Third-party hosts
1

Lighthouse

Simulated mobile · Performance

No measurement available

View details

No Lighthouse measurement available; no scores assigned.

01 / WHAT WORKS

What makes it work

No separate strengths were recorded. See the evidence below.

02 / NEXT STEPS

Where to go next

  1. See the individual checks for further guidance.

03 / DESIGN LANGUAGE

A design system you can reuse

No design tokens were extracted for this report.

04 / EVIDENCE

The detail behind the report

Explore each observation, recommendation and captured record.

Taste2 observations

Three equal feature cards

High

A row of three identical cards is the default feature block every generator emits. It signals layout, not a point of view.

Break the row. Use two columns, a list, or one featured item. Do not clone the same card three times.

grid-cols-3

Inter is doing the brand job

Medium

Inter is the default face of generated UI. On its own it is fine. As the only display voice, the page reads as a template.

Pick one display family that matches the product. Keep Inter only if the brief is deliberately neutral.

Inter
Conversion5 observations

Share card is incomplete

High

A blank or generic unfurl on X, Slack, or WeChat wastes the click you already earned. This is distribution, not decoration.

Set og:title, og:description, and a 1200x630 image that matches the live headline.

og:title=no og:image=yes

A form has no action

High

A waitlist or contact form with no action is a conversion dead end. It looks ready and does nothing.

Wire the form to an endpoint, Formspark, Basin, or a server action you actually handle.

<form>

No human or proof on the page

Medium

A stranger landing on an AI-looking site with no maker, no customer, and no contact will not give you an email.

Add a real name, a real face, a real contact method, or one real customer line.

no about, no first-person, no quote

No analytics on the live page

Medium

If you cannot see who bounced, you cannot tell if the next fix worked. Shipping without a counter is flying blind.

Put Plausible, PostHog, or GA4 on the public pages. One snippet is enough.

no gtag / plausible / posthog / umami

Tab title and H1 disagree

If the tab, the share card, and the hero name different things, the visitor cannot form one memory of the product.

Make title, og:title, and H1 share the same noun.

title="Expo Documentation" h1="Create amazing apps that run everywhere"
Launch2 observations

No HSTS header

Medium

Without Strict-Transport-Security, a first visit can still be downgraded to http. Browsers will not pin HTTPS.

Set Strict-Transport-Security: max-age=31536000; includeSubDomains at the edge.

strict-transport-security missing

No Content-Security-Policy

A CSP is the standard way to limit script sources. Vibe-coded pages often load anything, including injected scripts.

Start with a report-only CSP, then default-src 'self' and an explicit script-src.

content-security-policy missing
Link preview

05 / MAKE IT HAPPEN

Give your AI a clear next step

Use the improvement prompt for this page, or the design prompt to borrow its visual language. “Recreate” includes references and implementation steps. Paste either into your coding assistant.

Preview full instructions
You are editing an already-shipped page at https://docs.expo.dev/. Do not restyle the site from scratch. Do not introduce purple/violet/indigo gradients, Inter as the brand font, three equal feature cards, fake testimonials, fake round stats, or another shadcn default skin.

Current scores: Taste 78/100 (distinct), Conversion 42/100 (bounce), ship risks 0.

Fix only the named issues. Keep the information architecture and the product's actual claims. If social proof is fake, remove it rather than inventing new names.

Issues:
1. [taste/high] Three equal feature cards
   A row of three identical cards is the default feature block every generator emits. It signals layout, not a point of view.
   Fix: Break the row. Use two columns, a list, or one featured item. Do not clone the same card three times.
   Evidence: grid-cols-3

2. [conversion/high] Share card is incomplete
   A blank or generic unfurl on X, Slack, or WeChat wastes the click you already earned. This is distribution, not decoration.
   Fix: Set og:title, og:description, and a 1200x630 image that matches the live headline.

3. [conversion/high] A form has no action
   A waitlist or contact form with no action is a conversion dead end. It looks ready and does nothing.
   Fix: Wire the form to an endpoint, Formspark, Basin, or a server action you actually handle.
   Evidence: <form>

4. [taste/medium] Inter is doing the brand job
   Inter is the default face of generated UI. On its own it is fine. As the only display voice, the page reads as a template.
   Fix: Pick one display family that matches the product. Keep Inter only if the brief is deliberately neutral.
   Evidence: Inter

5. [conversion/medium] No human or proof on the page
   A stranger landing on an AI-looking site with no maker, no customer, and no contact will not give you an email.
   Fix: Add a real name, a real face, a real contact method, or one real customer line.

6. [conversion/medium] No analytics on the live page
   If you cannot see who bounced, you cannot tell if the next fix worked. Shipping without a counter is flying blind.
   Fix: Put Plausible, PostHog, or GA4 on the public pages. One snippet is enough.

7. [ship/medium] No HSTS header
   Without Strict-Transport-Security, a first visit can still be downgraded to http. Browsers will not pin HTTPS.
   Fix: Set Strict-Transport-Security: max-age=31536000; includeSubDomains at the edge.

8. [conversion/low] Tab title and H1 disagree
   If the tab, the share card, and the hero name different things, the visitor cannot form one memory of the product.
   Fix: Make title, og:title, and H1 share the same noun.
   Evidence: title="Expo Documentation" h1="Create amazing apps that run everywhere"

9. [ship/low] No Content-Security-Policy
   A CSP is the standard way to limit script sources. Vibe-coded pages often load anything, including injected scripts.
   Fix: Start with a report-only CSP, then default-src 'self' and an explicit script-src.

After the edits, the page should still be the same product. It should just look less like a prompt and convert more clearly.