# Native Fragments Full Context Native Fragments builds fast, explicit HTML applications on Cloudflare Workers. Core owns server routing, fragments, streaming, actions, APIs, and browser navigation. `@nativefragments/lit` owns Lit SSR and hydration integration. ## Create an app ```sh npm create @nativefragments/app@latest my-app cd my-app npm install npm run dev ``` The dev command runs esbuild and `wrangler dev --live-reload`. Source stays standards-based ESM; there is no framework compiler. ## Imports ```js import { html, fragment, route } from "@nativefragments/core/server"; import { createCloudflareHandler } from "@nativefragments/core/cloudflare"; import { startRouter } from "@nativefragments/core/client/router.js"; import { createWorkerClient } from "@nativefragments/core/client/worker.js"; import { renderLit } from "@nativefragments/lit/server"; import "@nativefragments/lit/client"; ``` ## Browser navigation ```js const router = startRouter({ prefetch: "intent" }); await router.navigate("/reports"); await router.prefetch("/settings"); router.invalidate("/reports"); ``` ## Deferred streaming ```js const panel = fragment("related", { loading: () => html`
Loading…
`, error: () => html`Unavailable.
`, render: async ({ signal }) => html`…`, }); route("/", { render: (context) => html`${context.defer(panel)}`, fragments: [panel], }); ``` Document and fragment navigation both stream deferred HTML. Router requests negotiate protocol version 1; unsupported clients receive buffered HTML. ## Lit SSR ```js import { renderLit } from "@nativefragments/lit/server"; import { html } from "lit"; import "../../client/components/app-card.js"; export const card = () => renderLit(html`