Repository navigation
LEO foundation: model-owned state, keyed rendering and familiar JSX - #29
Merged
Merged
Conversation
1 of 7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Direction
Make LEO a credible React alternative without moving application state into the component tree. Preserve LEOObject, LEOList and LEOElement and existing lifecycle/string-template entry points.
The research and staged acceptance criteria are in docs/react-direction.md, citing State of JS and React's own documentation. The 80% migration target and performance advantage remain unmeasured, not claimed.
Changes
Evidence
52 unit tests pass. All 34 new unit tests fail under relevant reverted/mutated production behavior, then pass after exact restoration. Both built-example integration checks also fail with the original production implementation and pass after restoration.
Production bundles, generated docs and example bundles build successfully. Both demos were exercised in a real browser, including shared state after reconnection and keyed input identity, focus and selection.
Deliberate limits
This is the first foundation, not a production-readiness or drop-in React compatibility claim. SSR/hydration, async/error boundaries, concurrent scheduling, types and representative migration/performance studies remain follow-up milestones. Native DOM events differ from React synthetic events; string templates remain trusted HTML.
No npm release or automatic merge is included.