Skip to content

Add Pracht - #439

Open
JoviDeCroock wants to merge 2 commits into
e18e:mainfrom
JoviDeCroock:add-pracht
Open

JoviDeCroock wants to merge 2 commits into
e18e:mainfrom
JoviDeCroock:add-pracht

Conversation

@JoviDeCroock

@JoviDeCroock JoviDeCroock commented Sep 2, 2026 •

Copy link
Copy Markdown

Adds Pracht, a Preact meta-framework built on Vite, as a tracked framework.

I'm the author of Pracht, so treat the choices below as "here's what the CLI does", not advocacy.

Note

This PR was co-authored by an agent and reviewed by myself

What's here

  • packages/starter-pracht/ — the Node/manifest-router starter, pinned to @pracht/core 0.18.0 and the matching current Pracht packages, with a first-party dependency manifest.
  • packages/app-pracht/ — benchmark routes, including separate ordinary-anchor and router-<Link> SSR load routes.
  • packages/stats-generator/ — production server and in-process SSR handler, browser-rendering and throughput registries, and paired SSR load configuration.
  • Registry entries for dev-server startup, install/build/dependencies/browser baseline, SSR request throughput, SSR plain-link load, SSR router-link load, client-side rendering, and server-side rendering.
  • Docs wiring: logo, chart maps, package mapping, methodology, framework page, README links.

No ci-stats.json — CI generates those on the Depot runners.

Benchmark choices

  • SSR routes use loaders over shared packages/testdata. Plain-link and router-link SSR load pages differ only in link implementation.
  • /client-side-rendered uses render: "spa" and generates 1,000 rows in the browser.
  • Runtime routes keep default full hydration. Opting out would materially change the throughput document and would not compare like-for-like with hydrating frameworks.
  • fullDocumentNavigation: false in browser benchmark registries: Pracht uses client-side navigation. Default intent prefetch on <Link> is left on.
  • Starter dev server responds on port 3000. Starter home route is prerendered; runtime SSR routes are rendered on demand.

Verification

  • Node 24, pnpm 11.1.1: frozen installs, starter/app production builds and type checks, workspace type-check and lint, docs build, formatting, first-party manifest validation, and stats-generator test suite (57 passing).
  • Starter dev-server benchmark returned its first HTTP 200; SSR throughput benchmark completed against the built handler.
  • Production app responded with 1,000 rows on both SSR load routes and /ssr-throughput; both load-route HTML responses passed the harness table verifier. The SPA route returned an empty SSR table, as intended.
  • Full Depot load and Lighthouse browser measurements are left to CI; local route probes are not those measurements.

Checklist

  • If updating UI/UX components ensure you have added screenshots or a gif or video of the changes to the PR description

    N/A — docs changes are assets, chart mappings, and Markdown.

  • If this is a dependabot PR that bumps a metaframework version, ensure that all package versions in the package match the versions installed by the metaframework version being bumped

    N/A — this is not a dependabot PR.

  • If this is a dependabot PR that bumps a metaframework version in a starter-* package, ensure that the deps, and file content matches the output of the metaframeworks recommended starter/default project

    N/A — this is not a dependabot PR.

@JoviDeCroock
JoviDeCroock marked this pull request as draft September 2, 2026 16:31
@JoviDeCroock
JoviDeCroock marked this pull request as ready for review September 2, 2026 17:46
@43081j

43081j commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

haven't read through yet but seems like a good addition to have!

very interested to see how it compares to the others

@AlexanderKaran

Copy link
Copy Markdown
Collaborator

Hi @JoviDeCroock

Thank you for the PR. I will need some time to review this in detail.

I will review each test setup and may have follow-up questions about framework-specific points that need to be added to the methodology.

@43081j Do we include this in Focused Frameworks or all. I lean towards all based on popularity?

@AlexanderKaran

Copy link
Copy Markdown
Collaborator

Hey @JoviDeCroock

Sorry to do this, but I have been going through a bunch of changes to get the base frameworks signed off. Some of them have been big, adding new tests and even changing some of the config.

I should be finished by the end of next week and will update the contribution guide with what you need to change.

Could you update this PR after that for me?

Once again, sorry just a lot of tweaks getting all the framework authors to sign off

@AlexanderKaran

Copy link
Copy Markdown
Collaborator

@JoviDeCroock Version one of the tests is pretty stable now so ready for this to be tweaked and added in

Adds `starter-pracht` and `app-pracht`, plus the stats-generator wiring
(production serve script, in-process SSR request handler, and entries in the
ssrRequestThroughput / ssrLoad / clientSideRendered / serverSideRendered
registries), a `.github/frameworks.json` entry, and docs-site wiring.

Pracht is a Preact meta-framework on Vite (https://github.com/JoviDeCroock/pracht).

`starter-pracht` is the output of `pnpm create pracht@latest --no-agent-tools`
with the remaining recommended defaults (Node adapter, manifest router, no
Tailwind). The generated `Dockerfile` and `.dockerignore` are dropped since no
measurement uses them, dependency versions are pinned exact, and the files are
formatted with the repository's Prettier config.

`app-pracht` mirrors the other `app-*` packages: SSR routes load from
`packages/testdata`, the client-side-rendered route uses `render: "spa"` and
generates its rows in the browser, and every route keeps the default
`hydration: "full"` so it is measured like the other hydrating frameworks.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants