biagiojs
v0.10.5 · leggero di default

Il tuo bottone «Compra» non dovrebbe aspettare dietro una chat.

Segni ogni blocco con quanto conta — per le vendite, per Google, per i click — e biagiojs decide cosa arriva prima sul wire, cosa si idrata e cosa resta HTML puro. Nessuna isola nella pagina? Zero JavaScript, punto.

npx create-biagiojs mio-sitonpm
zero JS finché non lo meriti/~14 KB di HTML qui/AVIF, WebP e JPEG inclusi/Node, Vercel o Cloudflare

Numeri veri, non slogan

Abbiamo misurato proprio questa pagina

Google Lighthouse sul sito che stai guardando — mobile su 4G limitata, desktop emulato. Un'isola piccola; tutto il resto è HTML statico. I punteggi parlano da soli.

Mobile: Lighthouse 100 performance, accessibility, best practices, SEO
Mobile100 · 100 · 100 · 100
Desktop: Lighthouse 100 performance, accessibility, best practices, SEO
Desktop100 · 100 · 100 · 100

Lighthouse 13 · luglio 2026 · biagio.danilosprovieri.com

Sotto il cofano

Le cose noiose, già fatte

01

Scheduler

Le sezioni che contano salgono nel sorgente HTML prima dei widget pesanti. Tu dichiari i pesi; la build rimette le carte in ordine.

02

Isole

Idrata subito, più tardi o mai. Una chat da 300 KB a bassa conversion resta statica — il checkout non aspetta lei.

03

SEO

Canonical, Open Graph, JSON-LD, sitemap e hreflang — generati in build, non aggiunti a posteriori.

04

Immagini

AVIF, WebP e JPEG responsive con sharp. Profili sensati, override per immagine e un controllo se citi un file che non c'è.

05

SSG + adapter

Siti statici di default. Quando serve SSR o ISR, gli adapter per Node, Vercel e Cloudflare sono a un passo di config.

Provalo tu

Muovi i cursori — il piano cambia sotto i tuoi occhi

Su questa pagina c'è un'isola sola. Trascina conversion e interaction: l'idratazione passa in tempo reale tra static, lazy ed eager. Niente reload, niente supposizioni.

Partiamo dallo statico. Il JavaScript si guadagna, non lo spargiamo per default.

Regola pratica: eager da ~0.3, lazy da ~0.05 — sotto quella soglia, la pagina resta senza JS.

idratazione 0.360eager

In un file vero

Dici cosa conta — la build fa il resto

pages/index.page.biagio
<page title="Home" description="…" />

<component id="hero" seo="1" conversion="0.9">
  <template><h1>Benvenuto</h1></template>
</component>

// conversion 1 → hydrates first · zero JS elsewhere
<component id="cta" conversion="1" interaction="0.85">
  <template><button id="buy">Compra</button></template>
  <script hydrate>
    el.querySelector('#buy').onclick = () => buy();
  </script>
</component>

Come pensiamo il web

Veloce di default, mirato quando serve

01

Lo statico è la strada comoda

La maggior parte delle pagine non ha bisogno di JavaScript lato client. biagiojs lo assume finché un componente non dimostra il contrario — la via veloce non è qualcosa per cui devi combattere.

02

Il business guida la build

Conversion, SEO e interaction non sono metriche da rincorrere dopo il lancio. Sono input: lo scheduler li trasforma in ordine nel sorgente e in un piano di idratazione che puoi capire.

03

L'uso reale alimenta la build successiva

CrUX, analytics e heatmap finiscono in reports/ e spostano i pesi nel tempo — il sito impara come le persone lo usano davvero, non come avevamo immaginato.

Un comando e hai il progetto

Aggiungi qualche peso ai componenti, lancia la build e guarda cosa arriva prima sul wire. In pochi minuti capisci se il modello fa al caso tuo.