Une syntaxe familière.
De nouvelles bases.
Écrivez du TypeScript et du JSX. PRISM prend en charge le rendu serveur, le CSS par route et les îlots interactifs. Votre application, sur le moteur bext.
Créer avec PRISMVue simplifiée du pipeline. Le cache ISR est géré par le moteur bext.
Dans cette page
La place de PRISM dans une requête
bext est le moteur. PRISM est l'étape de rendu qu'il contient, et non un outil séparé à lancer ou à déployer.
Requête
- HTTP/1.1 · 2 · 3
- N'importe quel domaine
bext
- Terminaison TLS
- Routage + proxy inverse
- Cache · compression · WAF
PRISM render
- TSX natif → HTML
- Pool d'isolats V8
- Sortie vers ISR · cache · HTTP
PRISM natif, ou l’adaptateur React de bext
PRISM est le chemin TSX → HTML natif. Pour une app React ou Next.js existante, bext fournit un adaptateur séparé ; les mesures de cette page concernent uniquement PRISM natif.
React / Next.js existant
Choisissez [framework] type = "nextjs" pour conserver React, RSC et les conventions App Router. Ce chemin n’utilise pas le moteur de rendu natif de PRISM.
- Composants serveur async, <Suspense> et le hook use(promise)
- Îlots « use client » hydratés automatiquement
- React Server Components et server actions
- next/font, next/image, next/link
- La plupart des applications Next.js App Router migrent avec peu de changements
Tout miser sur PRISM
Abandonnez React et utilisez les primitives de PRISM pour une stack plus légère, centrée sur le serveur.
- Son propre runtime JSX h() : léger, pensé pour le serveur, sans React
- Signaux fins + <List> / <Show> / <Switch>
- Bext Query, <Form> avec server actions, Tailwind natif
- Sessions signées, OAuth, accès par rôle, stockage objet, SSE, MDX
- Îlots en React, Preact, Solid ou signaux, au choix pour chaque composant
De page.tsx au HTML streamé
Écrire un page.tsx
Routage par fichiers, server components async, layouts, loaders et route handlers : les conventions que vous connaissez déjà.
La passe de compilation précompile le TSX
Les balises et sous-arbres statiques deviennent des fragments HTML ; les listes deviennent des boucles avec un seul accumulateur.
Rendu dans V8
Le bundle mis en cache s’exécute dans un isolat V8 chaud. Le runtime JSX automatique gère les parties dynamiques qui ne peuvent pas être précompilées, sans React ni DOM virtuel.
HTML + cache
Le HTML sûr et validé est transmis au pipeline ISR et HTTP ; les îlots interactifs optionnels s’hydratent séparément dans le navigateur.
TSX natif, îlots optionnels
Le rendu serveur n’utilise pas React. Un îlot client peut toutefois choisir React, Preact, Solid ou les signaux PRISM.
'use server'; // async server component export default async function Page() { const posts = await db.posts.all(); return ( <Suspense fallback={<Spinner />}> <Feed posts={posts} /> </Suspense> ); }
'use client'; import { useState } from 'react'; // auto-detected island export function Counter() { const [n, setN] = useState(0); return ( <button onClick={() => setN(n + 1)}> count: {n} </button> ); }
export async function GET(req) { const data = await load(); return Response.json(data, { headers: { 'cache-control': 's-maxage=60', }, }); }
Un framework complet, intégré
SSR streamé
Les composants async, les générateurs et le Suspense PRISM produisent des fragments HTML au fil de leur disponibilité.
Des îlots dans le runtime de votre choix
Les îlots React « use client » sont détectés automatiquement ; l’API d’îlots permet aussi Preact, Solid ou les signaux natifs de PRISM.
Signaux fins
Un runtime réactif intégré : signal / computed / effect avec <List>, <Show> et <Switch> à clé. Une réactivité à la Solid, rendue côté serveur puis hydratée.
Bext Query
Une couche de données à la TanStack Query, construite sur les signaux : createQuery / createMutation avec cache, état et revalidation en arrière-plan.
Formulaires et server actions
<Form> envoie vers une action « use server » et fonctionne sans JavaScript, avec amélioration progressive, UI optimiste et validation intégrées.
Passe de compilation
Les sous-arbres TSX statiques, les attributs sûrs et les listes reconnues deviennent des concaténations et boucles directes avant l'exécution V8.
ISR et cache de fragments
ISR au niveau de la page avec stale-while-revalidate et protection anti-stampede, plus un composant <ISR> pour mettre en cache des fragments avec leur propre TTL.
Tailwind natif
Les classes utilitaires sont extraites du HTML rendu et intégrées dans une feuille de style par route, sans PostCSS ni étape de build, et sans coût CPU quand elles ne servent pas.
Stockage objet
Envois et téléchargements S3 / R2 / MinIO présignés depuis un seul import (presignPut, presignGet, uploadDirect), configurés dans bext.config.toml.
Génération d'images OG
Images Open Graph dynamiques rendues côté serveur avec le moteur de mise en page CSS Taffy et une rastérisation du texte. Aucun service externe.
Démarrages à froid par snapshot
Des isolats préparés par heap snapshot rendent un nouveau worker prêt immédiatement : pas de préchauffage JIT ni de pénalité au démarrage à froid.
Dans le binaire
Pas de Node.js, pas de service SSR séparé, pas de sidecar. PRISM s'exécute dans le même processus bext qui termine le TLS, route les requêtes, met en cache et protège.
Les conventions que vous connaissez déjà
PRISM reprend les conventions de fichiers et de routage familières de l’App Router, tout en utilisant son propre moteur de rendu TSX.
exemples exécutables, en direct
Chaque primitive de cette page est câblée et tourne sur demo.bext.dev : signaux, server actions, streaming, cache, authentification, stockage et plus encore. Lisez le code source et observez le résultat.
Explorer les démos