wip: Create new example built with Tag #2163
Draft
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.
Tag framework documentation
Tag TodoMVC Demo
This PR is a bit pre-mature based on the guidelines, but wanted to open this for visibility. Throughout 2020 and 2021, I've been working to try and make front-end more approachable. Tag is a framework I built at Netflix and is currently in use for one internal app.
The framework is relatively unopinionated and has a lot of the same footguns as React (like, never set state in a render). The main advantage is the close adherence to web apis (IndexedDB, MutationObserver) and getting them for free. Ultimately, once custom tags are written, then they can just be used in HTML naturally. In practice, this means HTML tags and attributes can be wired directly into GraphQL queries that will populate tags on response, while caching the data so it's immediately ready on page reload.
This app is built with a pattern that would work on a large scale app maintained by large teams of people with different goals (e.g. both enterprise software and open-source software). Features are built in stand-alone files with related logic that could be A/B tested or incrementally improved and/or deprecated.
The general approach is "the user is a function,
show
information and they acton
it", everything else is hand-wavey magic, technical debt, or just a decision. As such, the index.html file contains everything the user can see and do, but all the business logic is tucked away inside feature functions.