Dunia ya maendeleo ya wavuti imetumia sehemu kubwa ya muongo ikijishawishi kwamba kivinjari (browser) kinapaswa kufanya kazi nzito. Tulianza na nyaraka na fomu, kisha polepole tukahamishia kila operesheni inayowezekana upande wa mteja (client). Routing, usimamizi wa hali (state management), upataji wa data (data fetching), mantiki ya uwasilishaji (rendering logic), hata uratibu wa hoja za hifadhidata kupitia GraphQL — vyote vilihamia kwenye vifurushi vya JavaScript (JavaScript bundles) ambavyo vilizidi kuwa vizito kwa kila toleo. Frameworks ziliongezeka, mifumo ya ujenzi (build pipelines) ikawa tata zaidi, na kile kilichoanza kama njia ya kufanya programu zionekane za haraka kikawa usanifu ambapo ukurasa hauwezi kuwasilisha hata piksel moja muhimu hadi megabaiti za kodi zipakuliwe, zichambuliwe, na kutekelezwa.

Mabadiliko hayo yalitatua matatizo halisi. Kurasa zinazowasilishwa na seva (server-rendered pages) zikiwa na kidogo cha jQuery zilipata shida kutoa mabadiliko laini kama ya programu (app-like transitions) ambayo watumiaji walitarajia. Single Page Applications zilitupa urambazaji wa papo hapo, hali endelevu (persistent state), na mwingiliano tajiri. Lakini gharama ziliongezeka. Timu sasa zinasimamia hifadhi tata za hali upande wa mteja (client-side state stores), zinapambana na vifurushi vikubwa vya JavaScript, zinadumisha tabaka za usawazishaji wa data (data synchronization layers) zenye changamoto, na kurekebisha (debug) mifumo ya ujenzi ambayo wakati mwingine inaonekana kama kazi yao ya kudumu. Tulibadilisha seti moja ya matatizo kwa nyingine, na watengenezaji wengi sasa wanajiuliza ikiwa kila programu inahitaji kulipa kodi hiyo.

Maendeleo mawili yanayofanya swali hilo kuwa rahisi kujibiwa.

HTMX na Kurudi kwa Hypermedia

La kwanza ni HTMX. Kwa nje, inaonekana kama maktaba ndogo, lakini athari yake ya usanifu ni kubwa. HTMX inachukulia HTML kama muundo wa asili wa mantiki ya programu badala ya kuichukulia kama ganda tuli ambalo lazima lijazwe na JavaScript.

Hapa ndipo mabadiliko yanapofanyika katika vitendo. Kijadi, mtumiaji anapobofya kitufe ili kupakia maoni zaidi, upande wa mbele (frontend) unatuma ombi la fetch, inapokea JSON payload, inaifanyia usawazishaji kwenye hifadhi ya upande wa mteja, inapitisha kupitia kiolezo cha sehemu (component template), inafanya ulinganishaji (diffs) wa virtual DOM, na hatimaye inarekebisha ukurasa. HTMX inakata mnyororo huo. Kitufe chenyewe kina sifa (attributes) zinazoambia kivinjari wapi pa kutuma ombi na ni kipengele gani cha ukurasa cha kubadilishwa. Seva inarudisha kipande cha HTML (HTML fragment) — maoni mapya tu, yakiwa yamefungwa ndani ya div. Kivinjari kinakibadilisha ukurasa. Hakuna JSON, hakuna mti wa hali wa frontend (frontend state tree), hakuna algoriti ya upatanishi (reconciliation algorithm), na hakuna JavaScript ya amri (imperative JavaScript) ili kuweka UI katika usawazishaji na seva.

Hii si kukataa maendeleo ya kisasa. Ni kukataa uundaji usio wa lazima (unnecessary abstraction). HTMX inathibitisha kwamba hypermedia, mtindo wa usanifu uliowezesha mtandao wa awali, bado unaweza kuunga mkono mwingiliano tata (sophisticated interfaces) unapounganishwa na urahisi wa kisasa. Kipengele chochote kinaweza kutoa maombi, si fomu na viungo tu. Tukio lolote linaweza kuchochea mabadiliko. Seva inabaki kuwa chanzo cha ukweli kwa data na uwasilishaji.

Chrome’s Declarative Partial Updates

Mabadiliko ya pili ni mapya zaidi na yapo ndani ya kivinjari chenyewe. Chrome inazindua Declarative Partial Updates, au DPU. Kipengele hiki kinaruhusu kivinjari kusambaza (stream) HTML na kuingiza moja kwa moja katika sehemu maalum za ukurasa wakati data inapofika.

Kabla ya DPU, ikiwa unataka kusambaza data ya moja kwa moja kwenye ukurasa wa wavuti, kwa kawaida ungetumia WebSockets, Server-Sent Events, au long-polling ikiambatana na urekebishaji wa manual wa DOM. Frontend ililazimika kusimamia muunganisho, kuchambua payload, na kuamua hasa jinsi na wapi pa kuingiza markup. DPU inabadilisha mlinganyo kwa kufanya mchakato huo kuwa wa kueleza (declarative). Mwendeshaji (developer) huainisha kontena lengwa, na kivinjari kinashughulikia mengine yote: kupokea mtiririko (stream), kuchambua kipande (fragment), na kukiweka mahali panapostahili, hata kabla ya jibu kamili halijafungwa.

Fikiria dashibodi ya ufuatiliaji inayoonyesha kumbukumbu za seva (server logs) au foleni ya msaada inayosasishwa kwa wakati halisi. Kwa DPU, backend inatuma vipande vya HTML rahisi vinapotengenezwa. Kivinjari kinavihamisha (streams) kwenye mwili wa jedwali (table body) au kontena la habari (feed container) bila mstari mmoja wa mantiki ya mtiririko upande wa mteja. Uundaji hutokea kiasili (natively).

The Server-First Model

Unganisha HTMX na DPU, na unapata usanifu thabiti ambapo seva inamiliki hali (state) na inatengeneza UI, wakati kivinjari kinashughulikia uwasilishaji na ingizo la mtumiaji. Frameworks za backend kama vile Rails, Laravel, Django, Go templates, au ASP.NET zinakuwa tabaka kuu la kiolesle (interface layer) tena. Frontend si programu tofauti inayotumia API. Ni kiolesle cha hypermedia ambacho seva inatengeneza.

Modeli hii inafaa sehemu kubwa ya programu kwa namna ya kushangaza. Fikiria programu ya kawaida ya SaaS. Ni dashibodi zenye majedwali yanayoweza kupangwa. Ni paneli za usimamizi (admin panels) zenye fomu na vichujio. Ni zana za ndani zinazohamisha rekodi kutoka hali moja kwenda nyingine. Ni mifumo ya CRUD inayonyesha orodha, inafungua muonekano wa maelezo, na kumruhusu mtumiaji kuhariri sehemu mbalimbali. Ni hata interface za AI ambapo modeli ya lugha inatuma token kwa mtumiaji kwa mtiririko, na kila token au aya inaweza kufungwa ndani ya HTML na kuongezwa kwenye mfululizo wa mazungumzo. Kwa vyote hivi, mteja mzito wa JavaScript mara nyingi ni ziada isiyo ya lazima.

Faida zake ni za papo hapo na za vitendo. Upakiaji wa awali wa kurasa ni wa haraka zaidi kwa sababu picha ya kwanza ya maana (first meaningful paint) inakuja kama HTML, na si baada ya mzunguko wa hydration kukamilika. Ukubwa wa JavaScript payload unapungua kwa sababu hakuna virtual DOM, hakuna client-side router, na hakuna maktaba ya usimamizi wa hali (state management library) inayohitajika kutumwa. Mitambo ya utafutaji (search engines) huona maudhui kamili bila kuhitaji kutekeleza bundles, hivyo SEO inafanya kazi kiasili. Ugumu unapungua kwa sababu codebase moja inashughulikia routing, mantiki ya biashara (business logic), na uwasilishaji (rendering). Kutatua hitilafu (debugging) inakuwa rahisi zaidi. Kitu kinapoonekana kuwa kibaya, unakagua sehemu ya Network na kuona HTML halisi ambayo seva ilituma. Hakuna kitu cha hali ya upande wa mteja (client-side state object) kisichoeleweka kinachohitaji kufanyiwa reverse-engineering.

Vipi Kuhusu React na Wateja Wazito?

Hii haimaanishi kuwa React imekufa, au kwamba SPAs ni makosa. Programu tata za kiwango cha kuhariri (editor-grade) bado zinahitaji mteja mzito. Figma hutumia injini ya C++ iliyobadilishwa kwenda WebAssembly ndani ya kivinjari kwa sababu mzunguko wa mawasiliano na seva (server round-trips) ungefanya uchoraji usiwezekane. Canva inabadilisha canvas kwa fremu sitini kwa sekunde kwa kutumia jiometri ya upande wa mteja. Google Docs hutumia operational transforms kutatua migongano ya uhariri ndani ya milisekunde. Zana hizi kimsingi ni programu za mezani (desktop applications) zinazotolewa kupitia tab ya kivinjari. Hazitarudi kwenye fomu zinazotolewa na seva (server-rendered forms).

Lakini programu nyingi si Figma. Programu nyingi si programu za kuhariri picha za wakati halisi (real-time graphics editor). Programu nyingi ni skrini ya ripoti, paneli ya usanidi, mtiririko wa uhifadhi (booking flow), au fomu ya usimamizi wa maudhui. Kwa kundi hilo kubwa la programu, kutuma mamia ya kilobaiti za JavaScript framework ili tu kubadilisha modal au kuchukua orodha ya rekodi haikuwa na maana sana. Uchumi wa stack unabadilika. Tunagundua tena kwamba seva inaweza kuwa karibu na mtumiaji kutokana na edge, na kwamba kivinjari chenyewe kimekuwa na uwezo wa kutosha kusasisha vipande (fragments) bila framework kuwa kati ya kila byte.

Pendulum Inapata Uwiano

Upinde wa usanifu wa wavuti unarudi upande wa urahisi, lakini si kurudi kwa ujinga kwa miaka ya tisini. Kivinjari kinakuwa chenye akili zaidi. Vipengele kama DPU havachukui nafasi ya ubunifu wa watengenezaji; vinachukua mifumo tuliyokuwa tukiitekeleza kwa mkono — streaming, updates za sehemu, uwekaji wa DOM uliolengwa — na kuingiza kwenye jukwaa lenyewe. HTMX inatupa msamiati wa kuelezea tabia hizo bila kujenga upya mfumo mdogo wa uendeshaji (miniature operating system) kwenye frontend.

Hutakiwi tena kuchagua kati ya usanifu rahisi na uzoefu wa mtumiaji unaoitikia haraka (responsive user experience). Unaweza kuwa na vyote viwili. Seva inaweza kuendesha interface, kivinjari kinaweza kuikusanya, na JavaScript unayoandika inaweza kuzingatia mwingiliano halisi (genuine interactivity) badala ya kazi za msingi za kiufundi (plumbing).

Kwa kizazi kijacho cha dashibodi, zana za usimamizi, na interface zinazoendeshwa na AI, mteja mwenye akili zaidi anaweza kuwa ule unaofanya mambo machache zaidi.