Read these first:
gUI is not a rerender-driven framework. Contributions should preserve the current architecture:
- no virtual DOM diffing as the default path
- no component rerender loop
- no dependency arrays
- no React-style hooks model
- no proxy-based deep tracking in the main runtime
- direct subscriptions between reactive sources and DOM bindings
Good contributions usually fall into one of these categories:
- bug fixes with a small reproducible case
- tests that lock down runtime behavior
- docs improvements that reflect the actual public API
- performance improvements backed by concrete reasoning
- compiler, devtools, or rendering improvements that preserve the one-time setup model
Please check:
- whether the behavior is already documented in the README or wiki
- whether the issue is already open
- whether the behavior is actually a bug versus an intentional runtime constraint
When reporting a bug, include:
- the package version
- browser and OS
- a minimal reproduction
- expected behavior
- actual behavior
Install dependencies:
npm installRun the main validation steps:
npm run check
npm testOptional:
npm run test:coverage
npm pack --dry-runPrefer changes that keep updates local and inspectable.
- keep components as setup functions
- move ongoing behavior into signals, computeds, effects, and bindings
- keep list ownership stable by key
- favor direct DOM operations over broad structural replacement
If you change public behavior, update the relevant docs:
README.mdnpm-readme.mdROADMAP.mdif the future direction changes- wiki pages when the workflow or public API changes
If you change runtime, compiler, rendering, or devtools behavior, add or update tests.
Relevant test areas:
test/reactivity/test/rendering/test/compiler/test/composition/test/core/
Keep changes focused.
- separate refactors from behavior changes when practical
- explain the runtime or API impact clearly
- mention edge cases and compatibility concerns
Before opening a PR, make sure you have:
- run
npm run check - run
npm test - updated docs if the public behavior changed
- added or updated tests for the changed behavior
- described the user-visible or runtime-visible impact
Pull requests are evaluated primarily on:
- correctness
- architectural fit
- performance implications
- clarity of implementation
- test coverage
- documentation accuracy
If you are unsure whether an idea fits the project direction, open a feature request or draft PR before doing a large implementation.