EHTML (Extended HTML) is a #NoBuild open-source JavaScript library that adds custom elements to HTML for fetching JSON, submitting forms, templating lists, and live-updating page content directly in the browser without a bundler or virtual DOM.
What is EHTML?
EHTML is a client-side library created by Guseyn, maintained on GitHub with 311 stars and released as version 3.0.21. It accepts plain HTML markup and JSON endpoints as inputs and produces rendered, live-updated pages as output, running entirely in the browser. The library removes the need for a compilation step, aligning with the #NoBuild philosophy popularized by DHH's essay on avoiding build tools.
Key Features
- NoBuild workflow — EHTML requires no bundler, no virtual DOM, and no reactive overhead; you write plain HTML and let the library handle data operations.
- JSON fetching — Custom elements fetch JSON from URLs and display the data in your page structure.
- Form submission — Custom form elements submit data to endpoints and show the server response without wiring up event listeners in JavaScript.
- List templating — Repeatable list markup renders from JSON arrays, replacing client-side template engines.
- Live updates — Page sections refresh with new data so content stays current without a full browser reload.
- Official resources — The project website at e-html.org includes a documentation page, a blog, a newsletter, and a dedicated examples page.
- Demo videos and sample code — The repository links to demo videos for v3 (simple blog app) and v2 (simple blog and chat apps), plus the corresponding source code on GitHub.
- Open contribution — Development happens in the public GitHub repository where issues and pull requests are welcome.
Who is it for?
EHTML is built for developers who want data-driven pages without adopting a build-based framework. Frontend developers can prototype interactive pages using only HTML and JSON endpoints. Backend developers can attach JSON APIs to server-rendered pages without writing client-side scripts. Hobbyists exploring the #NoBuild approach can use EHTML to avoid Node.js toolchains while still getting dynamic content.
What can you do with EHTML?
- Fetch and render API data — Place a custom element that loads JSON from a REST API and renders the result into your HTML template.
- Submit forms asynchronously — Use EHTML's form element to POST user input to a backend and display the response on the same page.
- Display dynamic lists — For JSON arrays in endpoints, generate list items automatically from the markup in your page.
- Build live-updating pages — Sections like dashboards or chat feeds can refresh in place as new data arrives.
FAQ
Is EHTML free?
Yes, EHTML is open source. The source code is publicly available on GitHub under the repository Guseyn/EHTML, and anyone can use, fork, or contribute to it.
Does EHTML require a build step?
No, EHTML is explicitly a #NoBuild library. You do not need a bundler or virtual DOM; you write plain HTML and load the library in the browser.
What version of EHTML is current?
Version 3.0.21 is the current release shown on the project's GitHub page. The repository also maintains documentation and examples for using EHTML in your own projects.








