{"id":13518670,"url":"https://github.com/tbranyen/diffhtml","last_synced_at":"2025-05-13T21:04:19.186Z","repository":{"id":30454194,"uuid":"34007876","full_name":"tbranyen/diffhtml","owner":"tbranyen","description":"diffHTML is a web framework that helps you build applications and other interactive content","archived":false,"fork":false,"pushed_at":"2024-12-05T23:09:01.000Z","size":8253,"stargazers_count":870,"open_issues_count":15,"forks_count":33,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-28T11:58:48.985Z","etag":null,"topics":["components","diffhtml","dom-components","javascript","virtual-dom","web-components"],"latest_commit_sha":null,"homepage":"https://diffhtml.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tbranyen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-04-15T17:17:05.000Z","updated_at":"2025-04-15T08:53:59.000Z","dependencies_parsed_at":"2023-02-18T15:30:46.045Z","dependency_job_id":"c033ce16-10bf-4009-b632-6182b8355aa6","html_url":"https://github.com/tbranyen/diffhtml","commit_stats":{"total_commits":974,"total_committers":17,"mean_commits":"57.294117647058826","dds":0.1273100616016427,"last_synced_commit":"f25d1c4acf8da35debb1e1f3f4af868f011ae0ab"},"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbranyen%2Fdiffhtml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbranyen%2Fdiffhtml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbranyen%2Fdiffhtml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbranyen%2Fdiffhtml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tbranyen","download_url":"https://codeload.github.com/tbranyen/diffhtml/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252316893,"owners_count":21728521,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["components","diffhtml","dom-components","javascript","virtual-dom","web-components"],"created_at":"2024-08-01T05:01:47.509Z","updated_at":"2025-05-13T21:04:19.161Z","avatar_url":"https://github.com/tbranyen.png","language":"JavaScript","readme":"# \u003c±/\u003e diffHTML\n\n[![Build Status](https://github.com/tbranyen/diffhtml/actions/workflows/build-ci.yml/badge.svg)](https://github.com/tbranyen/diffhtml/actions/workflows/build-ci.yml)\n[![Coverage Status](https://coveralls.io/repos/github/tbranyen/diffhtml/badge.svg?branch=master)](https://coveralls.io/github/tbranyen/diffhtml?branch=master)\n\nLatest version: 1.0.0-beta.30\n\ndiffHTML is an extremely lightweight and optimized HTML parser and Virtual DOM\nspecifically designed for modern web UIs. These interfaces can be applications,\ngames, data visualizations, or anything that you may want to render in a web\nbrowser or Node.\n\nThe core package works like a library, where you can import just one function\nand have a fully reactive VDOM rendering engine. When you opt into more\nfunctions and use the companion packages you get a framework for structuring\nyour ideas.\n\n## Features\n\n- Parses real **HTML** and supports **JSX \u0026 Tagged Templates**.\n- Memory efficient VDOM rendering that utilizes **object pooling**.\n- Powerful **middleware** extends diffHTML with additional features.\n- **React-like** Components which can be rendered as **Web Components**.\n- A **lite** build which has a smaller size, meant for optimizing production code.\n\nWorks great with legacy and modern browsers, Node.js, Deno, and with whatever\nyour favorite JavaScript runtime is.\n\n## Packages\n\nThe following list of modules are nested in the `/packages` folder. They form\nthe foundation of the diffHTML ecosystem.\n\n* [diffhtml](/packages/diffhtml)\n\n  ```sh\n  npm install diffhtml\n  ```\n\n  The core public API for creating user interfaces. Contains a standard build\n  which includes everything, and a smaller optimized build that excludes the\n  HTML parser and performance metrics, which is useful for those who want to\n  minimize the filesize.\n\n* [diffhtml-components](/packages/diffhtml-components)\n\n  ```sh\n  npm install diffhtml-components\n  ```\n\n  Provides constructors and middleware for rendering stateful/stateless\n  components seamlessly. The API will be very familiar to anyone\n  who has used React as the class methods and structure are the same.\n\n* [diffhtml-rust-parser](/packages/diffhtml-rust-parser)\n\n  ```sh\n  npm install diffhtml-rust-parser\n  ```\n\n  **Coming soon**\n\n  An alternative parser written in Rust and compiled to WASM, providing a\n  wrapper around the [tl](https://docs.rs/tl/latest/tl/) HTML parsing library\n  which is then converted into a compatible diffHTML VDOM structure.\n\n* [babel-plugin-transform-diffhtml](/packages/babel-plugin-transform-diffhtml)\n\n  ```sh\n  npm install babel-plugin-transform-diffhtml\n  ```\n\n  Transforms your input into function calls. This eliminates the need for\n  runtime parsing. This is similar to how React compiles down JSX.\n\n* [diffhtml-middleware-linter](/packages/diffhtml-middleware-linter)\n\n  ```sh\n  npm install diffhtml-middleware-linter\n  ```\n\n  This module will run various linting rules on your input to ensure you are\n  writing valid/well-formed HTML. This was inspired by and uses rules from the\n  [HTMLHint](https://htmlhint.com/) project.\n\n* [diffhtml-middleware-logger](/packages/diffhtml-middleware-logger)\n\n  ```sh\n  npm install diffhtml-middleware-logger\n  ```\n\n  Logs out diffHTML state from the start and end of every render transaction.\n\n* [diffhtml-middleware-synthetic-events](/packages/diffhtml-middleware-synthetic-events)\n\n  ```sh\n  npm install diffhtml-middleware-synthetic-events\n  ```\n\n  Changes the event binding from inline event handlers like `onclick = fn` to\n  use `addEventListener`. Events are attached to the `body` element and\n  coordinated to children through delegation.\n\n* [diffhtml-middleware-service-worker](/packages/diffhtml-middleware-service-worker)\n\n  ```sh\n  npm install diffhtml-middleware-service-worker\n  ```\n\n  Helps with the creation of a service worker for PWAs, available as a\n  convenience to make development more friendlier.\n\n* [diffhtml-website](/packages/diffhtml-website)\n\n  The source for the [www.diffhtml.org](https://www.diffhtml.org) website.\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbranyen%2Fdiffhtml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftbranyen%2Fdiffhtml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbranyen%2Fdiffhtml/lists"}