UI Arkitektur

Immutable Web App

Förslag

  • tm-client bygger och publicerar en versionerad js bundle till en cdn första gången den byggs (dev bygget?)

  • cdn:en cachas alltid (cache-control: public, max-age=31536000, immutable)

  • index.html refererar till den versionen av bundlen och deployas i Kubernetes servicen

  • index.html cachas aldrig (cache-control: no-store)

  • tm-client servicen injectar environment variabler i index.html via globala variablar som js bundlen sedan kan referera till (t ex. Sentry token, AI instrumentation key)

    • vi behöver förmodligen byta till node/express istället för nginx

React

Lokal state vs global state

  • lokal state innebär även att data inladdning måste ske lokalt och att api datan endast är tillgängligt lokalt (eller kan skickas neråt i trädet, men aldrig uppåt)

  • utspridd lokal state har traditionellt sett varit ett utmaning att hantera på ett pålitligt och tydligt sett (därav Flow/Redux/osv uppfanns)

  • lokal state är det React är byggt för och något som uppmuntras av React teamet genom att bygga bättre verktyg för att hantera det (hooks, suspense, osv), även Apollo är väl anpassat för att exekvera queries och muteringar nere i komponenter istället för ovanför (i t ex. Redux)

  • JavaScript inte helt anpassat för att arbeta med endast global, immutable state (dictionary api:er saknas, något som är användbart när man editerar data)

  • oklart hur nya React features som suspense/time-slicing kommer fungera med global state (t ex. Redux)