wir bleiben auf lit-basis weil 1) Ockam's razor, 2) use the platform, 3) it doesn't matter und wir wollen zumindest teilweise webcomponents und die sind mit react echt schlecht darstellbar
Fokus auf Signals bzw hierarchischen Context für alles was (semi-)global ist (baseQL, global state, theme, routing, etc)
baseQL (mindestens die consumption side) ist durch signals vollständig abbildbar, rxjs also raus. Aber damit das kein Blocker wird können wir vorerst die conversion functions nutzen und useQuery direkt auch noch rxjs supporten lassen. Ob Signals auf dem Server auch gehen ist anzunehmen aber tbd, aber das blockt hier nicht.
RXJS bleibt library of choice für event based, dafür gibt es toSignal und eine toObservable
überall webcomponents aber shadow root auf opt-in-basis. Style leakage ist nur ein Problem bei Embeds und dafür haben wir ja noch shadow roots
hooks stellen wir optional für rein internen state zur Verfügung, mit denselben Regeln und Implementierungen wie bei react (basically, only call on top level: https://react.dev/reference/rules/rules-of-hooks)
der class based Weg mit lit-element bleibt und wird auch nicht deprecatet, dafür gibt es gute cases. Die lit-element dependency ist aber optional, Chemistry dependet nur auf lit-html
ChemistryLitElement wird deprecatet, alles was da zur Verfügung gestellt wird, wird als signal oder context zur Verfügung gestellt
bewusst kein HMR
neuer signal basierter router
form fields bleiben aber werden möglichst headless sodass man sie mit tailwind oder daisyUI classes stylen kann (und später auch umstylen kann)
Todo
PoC implementation for signals and hooks
tailwind support
router port
useForm und minimalinvasiver eingriff
daisyUI PoC
src,functional-lit,router,forms nach // TODO durchsuchen und entweder machen oder auf post-release aufschreiben
docs für neuen router
docs für functional-lit
in realem Projekt testen
breaking release publishen
weiteres reales Projekt onboarden
final release kommunizieren
skeleton updaten und mal in real life clonen und DX prüfen
post-release
get rid of old dependencies in router and deprecate the old logic
alle chemistry components nochmal durchgehen und ersetzen, dann chemistry löschen