{"id":19564492,"url":"https://github.com/dioxuslabs/blitz","last_synced_at":"2025-05-13T17:09:48.491Z","repository":{"id":37857457,"uuid":"464340188","full_name":"DioxusLabs/blitz","owner":"DioxusLabs","description":"A radically modular HTML/CSS rendering engine","archived":false,"fork":false,"pushed_at":"2025-05-09T23:02:49.000Z","size":18223,"stargazers_count":2542,"open_issues_count":39,"forks_count":67,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-05-09T23:25:45.731Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DioxusLabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.MD","funding":null,"license":"LICENSE-APACHE","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},"funding":{"github":"DioxusLabs","open_collective":"dioxus-labs"}},"created_at":"2022-02-28T04:42:02.000Z","updated_at":"2025-05-09T22:20:22.000Z","dependencies_parsed_at":"2025-05-09T23:22:07.329Z","dependency_job_id":"60a6d9a7-6d0e-4842-b5dd-19b550801a43","html_url":"https://github.com/DioxusLabs/blitz","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DioxusLabs%2Fblitz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DioxusLabs%2Fblitz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DioxusLabs%2Fblitz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DioxusLabs%2Fblitz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DioxusLabs","download_url":"https://codeload.github.com/DioxusLabs/blitz/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990468,"owners_count":21995774,"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":[],"created_at":"2024-11-11T05:22:15.144Z","updated_at":"2025-05-13T17:09:48.470Z","avatar_url":"https://github.com/DioxusLabs.png","language":"Rust","funding_links":["https://github.com/sponsors/DioxusLabs","https://opencollective.com/dioxus-labs"],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\n\u003cpicture \u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://blitz-website.fly.dev/static/blitz-logo-with-text3-white.svg\"\u003e\n  \u003cimg height=\"70\" alt=\"Blitz\" src=\"https://blitz-website.fly.dev/static/blitz-logo-with-text3.svg\"\u003e\n\u003c/picture\u003e\n\u003c/p\u003e\n\n**A [radically modular](https://github.com/DioxusLabs/blitz?tab=readme-ov-file#architecture) HTML/CSS rendering engine**\n\n[![Build Status](https://github.com/dioxuslabs/blitz/actions/workflows/ci.yml/badge.svg)](https://github.com/dioxuslabs/blitz/actions)\n[![Crates.io](https://img.shields.io/crates/v/blitz.svg)](https://crates.io/crates/blitz)\n[![Docs](https://docs.rs/blitz/badge.svg)](https://docs.rs/blitz)\n![Crates.io License](https://img.shields.io/crates/l/blitz)\n[![dependency status](https://deps.rs/repo/github/dioxuslabs/blitz/status.svg)](https://deps.rs/repo/github/dioxuslabs/blitz)\n\nTalk to us in: the [#native](https://discord.gg/AnNPqT95pu) channel in the [Dioxus Discord](https://discord.gg/AnNPqT95pu)\n\n## Status\n\nBlitz is currently in a **pre-alpha** state. It already has a very capable renderer, but there are also still many bugs and missing features. We are actively working on bringing into a usable state but we would not yet recommend building apps with it.\n\nCheck out the [roadmap issue](https://github.com/DioxusLabs/blitz/issues/119) for more details. \n\n## Screenshot\n\n![screenshot](https://raw.githubusercontent.com/DioxusLabs/screenshots/main/blitz/counter-example.png)\n\n\n\u003e Note: This repo contains a new version of Blitz (v0.2+) which uses Stylo. The source code for the old version (v0.1) is still available on the [legacy](https://github.com/DioxusLabs/blitz/tree/legacy) branch but is not under active development.\n\n\n## Trying it out\n\n1. Clone this repo\n2. Run an example:\n    - `cargo run --release --example todomvc`\n    - `cargo run --release --example google`\n3. Or our \"browser\" package:\n    - `cargo run --release --package readme ./README.md`\n    - `cargo run --release --package readme https://news.ycombinator.com`\n\nOther examples available.\n\n## Goals\n\nBlitz is designed to render HTML and CSS - we *don't* want to support the entirety of browser features (or at least we want to make all such \"extra\" features opt-in). In our opinion, the browser is bloated for the basic usecase of rendering HTML/CSS.\n\nWe do intend to support:\n\n- Modern HTML layout (flexbox, grid, table, block, inline, absolute/fixed, etc).\n- Advanced CSS (complex selectors, media queries, css variables)\n- HTML Form controls\n- Accessibility using AccessKit\n- Extensibility via custom widgets\n\nNotably we *don't* provide features like webrtc, websockets, bluetooth, localstorage, etc. In a native app, much of this functionality can be fulfilled using regular Rust crates and doesn't need to be coupled with the renderer.\n\nWe don't yet have Blitz bindings for other languages (JavaScript, Python, etc) but would accept contributions along those lines.\n\n## Architecture\n\nBlitz consists of a core DOM abstraction; several modular pieces which provide additional functionality like networking, rendering, windows, and state management; and two high-level wrappers that support rendering either a Dioxus application or HTML with a simplified API.\n\nThese pieces can be combined together to make a cohesive web engine.\n\n### High-level \"wrapper\" crates\n\n- **`blitz`** - An HTML/markdown frontend that can render an HTML string. This is useful for previewing HTML and/or markdown files but currently lacks interactivity.\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: `blitz-dom`, `blitz-html`, `blitz-shell`, `blitz-renderer-vello`\u003c/b\u003e\u003c/small\u003e\n- **`dioxus-native`** - A Dioxus frontend that can render a Dioxus VirtualDom. This has full interactivity support via Dioxus's event handling.\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: `blitz-dom`, `dioxus-core`, `blitz-shell`, `blitz-renderer-vello`\u003c/b\u003e\u003c/small\u003e\n\nBoth wrappers can optionally use \u003cb\u003e`blitz-net`\u003c/b\u003e to fetch sub-resources.\n\n### Modular Components\n\n#### Core crates\n\n- **`blitz-dom`** - The core DOM abstraction that includes style resolution, layout and event handling (but not parsing, rendering or system integration).\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [Stylo](https://github.com/servo/stylo) (CSS parsing/resolution), [Taffy](https://github.com/DioxusLabs/taffy) (box-level layout), [Parley](https://github.com/linebender/parley) (text layout)\u003c/b\u003e\u003c/small\u003e\n- **`blitz-traits`** - Minimal base crate containing types and traits to allow the other crates to interoperate without depending on each other\n\n#### Additional crates\n\n- **`blitz-net`** -  Networking that can fetch resources over http, from the file-system or from encoded data URIs.\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [reqwest](https://github.com/seanmonstar/reqwest) (HTTP client)\u003c/b\u003e\u003c/small\u003e\n- **`blitz-paint`** - Translates a `blitz-dom` tree into `anyrender` draw commands.\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [anyrender](https://github.com/DioxusLabs/blitz/tree/main/packages/anyrender) (2D drawing abstraction)\u003c/b\u003e\u003c/small\u003e\n- **`blitz-html`** -  Adds HTML parsing to `blitz-dom`\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [html5ever](https://github.com/servo/html5ever) (HTML parsing) and [xml5ever](https://github.com/servo/html5ever/tree/main/xml5ever) (XHTML parsing)\u003c/b\u003e\u003c/small\u003e\n- **`blitz-shell`** - A shell that allows Blitz to render to a window (integrates a Winit event loop, AccessKit, Muda etc).\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [winit](https://github.com/rust-windowing/winit) (windowing/input), [accesskit](https://github.com/AccessKit/accesskit) (accessibility), [muda](https://github.com/tauri-apps/muda) (system menus)\u003c/b\u003e\u003c/small\u003e\n\n#### Anyrender crates\n\nTemporarily hosted in the Blitz repository while they mature/stabilise, these will be spun out into their own repo when ready.\n\n- **`anyrender`** - A 2D drawing abstraction suitable for rendering web content.\n- **`anyrender_svg`** - Translates SVGs into `anyrender` drawing commands.\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [usvg](https://github.com/linebender/resvg) (SVG)\u003c/b\u003e\u003c/small\u003e\n- **`anyrender_vello`** - A Vello/WGPU backend for `anyrender`\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [vello](https://github.com/linebender/vello) + [wgpu](https://github.com/gfx-rs/wgpu) for rendering\u003c/b\u003e\u003c/small\u003e\n- **`anyrender_vello_cpu`** - A vello_cpu/softbuffer backend for `anyrender`\n\u003cbr /\u003e\u003csmall\u003e\u003cb\u003eUses: [vello_cpu](https://github.com/linebender/vello/sparse_strips/vello_cpu) + [softbuffer](https://github.com/rust-windowing/softbuffer) for rendering\u003c/b\u003e\u003c/small\u003e\n\n\n## License\n\nThis project is dual licensed under the Apache 2.0 and MIT licenses.\n\nThe `stylo_taffy` crate is ADDITIONALLY licensed under MPL 2.0 (so it is triple licensed under Apache 2.0, MIT, and MPL 2.0 licenses) for easier interop with the Servo project.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Blitz by you, shall be dual licensed as Apache 2.0 and MIT (and MPL 2.0 if submitted to the `stylo_taffy` crate), without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdioxuslabs%2Fblitz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdioxuslabs%2Fblitz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdioxuslabs%2Fblitz/lists"}