Less framework, fewer headaches
Jeasx keeps its core small: asynchronous JSX on the server, file-based routing, and little else. Everything beyond that is integrated in userland with code you own and can adapt.
JSX with Ease
Use asynchronous JSX as an intuitive templating language for the server-side rendered web.
Browse examplesVisit jeasx.dev
Jeasx keeps its core small: asynchronous JSX on the server, file-based routing, and little else. Everything beyond that is integrated in userland with code you own and can adapt.
All examples are on GitHub. Clone the repository to run them locally. Every example links to its source in the top right corner. Change the code freely and see what happens.
Everything jsx-async-runtime renders on the server: promises, iterables and other values as children, render props, request context via 'this', overriding how JSX turns into HTML, Declarative Shadow DOM and unit tests for components.
Async components don't block the page: jsx-async-runtime streams HTML as soon as it is ready, in order, in parallel or out of order, from async iterables or a ReadableStream.
Render the same JSX components on the server and in the browser with jsx-async-runtime, without React, a virtual DOM or hydration: from simple widgets to apps that work with and without JavaScript, and streamed async trees.
Games where jsx-async-runtime renders every frame in the browser: animation, input and game logic with plain JSX components.
Render pages on the server with content from a remote API, JSON data or Markdown with MDX, and build interactive apps with plain HTML forms. No client-side JavaScript needed: view transitions make page changes feel smooth.
Routes aren't limited to HTML: they can return images, SVG, JSON, XML, PDF, a live stream of Server-Sent Events, a WebSocket or any other content type.
Protect routes with basic auth or sessions, sign cookies, block injected scripts stop bots with a proof-of-work captcha and rate-limit APIs. Catch errors, manage the head and transform the final HTML before it is sent to the browser.
Every Jeasx route can return an HTML fragment, so hypermedia libraries like HTMX and Fixi can update parts of a page with markup rendered on the server.
Add islands of interactivity to server-rendered pages with the JavaScript library or framework you already know.