Log — Frontend Architecture Wiki
Append-only history. Entries start ## [YYYY-MM-DD] <op> | <title>.
[2026-08-12] split | Spoke created from the hub _inbox frontend-architecture cluster
Spun out at the curator's approval, from three sources parked over six weeks under the tag
frontend-architecture. Every existing spoke had declined them, and the declines became this spoke's
scope boundary (CLAUDE.md):
- flutter-large-app-structure — parked 2026-06-30 as
app-development, re-tagged 2026-07-14. Declined by game-engines (Flame is a Flutter game engine; a general app-architecture guide there is a category error), dev-tooling (Ky precedent — application-level concerns are out), webperf, static-site. - micro-frontends-migration — parked 2026-07-14. Declined by ui-frameworks (the talk explicitly contrasts micro-frontends with components, so it sits above that spoke's subject), static-site (React meta-frameworks excluded by charter), platform-ops ("microservices for the frontend" is the analogy, not the domain), dev-tooling, webperf.
- open-saas — parked 2026-08-10 with the cluster tally at 3 and both readings recorded rather than acted on. Declined by static-site (full-stack frameworks excluded since 2026-06-03: "park them unless a better home exists"), dev-tooling, ui-frameworks, foss-applications, agentic-tooling.
The genre objection is on the record and was not dissolved. Two of the three sources are architecture guides that argue a thesis; Open SaaS is a template that embodies one silently, and this same cluster had already excluded a build-along tutorial on exactly that distinction. The curator approved with both readings in front of them. Kept live in synthesis → Contradictions and on boilerplate.
One thing this spin-out resolves elsewhere: ../static-site-wiki has excluded full-stack and React
meta-frameworks since 2026-06-03 with the instruction to park them "unless a better home exists." This
is that home. Next.js, Remix, Gatsby and Wasp route here from now on.
All three primaries re-fetched at ingest, per ../HUB.md
A park record is a lead, not a finding. Two corrections came out of it:
- open-saas — the park record (2026-08-10) said 15,217★ / 1,818 forks / 114 open issues. Verified 2026-08-12: 15.3k★ / 1.8k forks / 101 open issues. Stars and forks agree; the issue count moved.
- micro-frontends-migration — the park record did not name the venue. It is QCon San Francisco 2025, and Mezzalira's stated basis is hundreds of migrations at Amazon and with AWS customers.
- flutter-large-app-structure — published 23 June 2026 (the record carried only a fetch date of 2026-06-30). Confirmed on re-read: the article cites no study, case or measurement, which is why it is tiered T3 on what it rests on rather than on its publisher.
- wasp — fetched as its own primary rather than through the boilerplate: 18.7k★, v0.24.0, in beta by its own statement, targeting React + TanStack Query / Node + Express / Prisma only.
Founding pages (11)
Sources: micro-frontends-migration (T2), open-saas (T1), wasp (T1),
flutter-large-app-structure (T3).
Things: application-architecture, micro-frontends, feature-first-structure, app-shell,
boilerplate.
Entities: luca-mezzalira (Person), freecodecamp (EducationalOrganization). [[aws]] and
[[infoq]] are linked cross-wiki to their existing nodes in ../cloud-wiki and ../platform-ops-wiki rather
than duplicated.
The founding thesis
One question — who decides an application's structure — answered from three positions: the team by convention, the organization by ownership, the framework before anyone arrives. The two architecture sources converge on boundaries beat patterns and on features owning their own state, from different scales and ecosystems, which is the strongest signal this corpus holds.
Two findings recorded against the grain of the sources. The corpus's headline number (3 deploys a month → 25 a day per team) is credited by its own author to the "safe net" of edge-compute rollback, so it is evidence about reversibility rather than modularity. And the difference between the two scales is enforcement: a micro-frontend boundary is enforced by deployment, a feature boundary by discipline, and no source here compares how well each holds.
Recorded weakness
This domain argues more than it measures. One source reports work done, one states what it ships, one
cites nothing. CLAUDE.md carries an edge rule requiring every page to record what its source rests on,
and growth edge 1 asks for any measured outcome of a structural choice — the spoke's thesis is
currently unfalsifiable.
Sweep of the rest of _inbox (../HUB.md step 6)
Re-read the remaining 25 parked records against this spoke's new domain: line, since "no spoke owns
this" stops being true the moment a spoke is created. Nothing else moved. The three nearest were
checked in full and all three fail on the same distinction the charter draws:
ky-http-client(js-libraries) — an HTTP client. A library the application uses, not a decision about the application's structure. This is the precedentCLAUDE.mdcites against../dev-tooling-wiki, and it cuts the same way here.ai-test-automation-paradox(ai-productionization) — about the brittleness of DOM-structural test abstractions under AI-generated tests. Adjacent (it is an argument about an abstraction) and its subject is test automation.temporal-durable-execution(durable-execution) — backend workflow persistence;../platform-ops-wikiterritory if anywhere.
Note for future readers: both earlier park records cite an adrianhajdin-uber-clone record as the
build-along tutorial this cluster excluded on genre. It is no longer in the holding pen — routed or
dropped at some point before today — so the exclusion survives only as reasoning quoted in those two
records, not as a record you can go and read.
[2026-08-15] ingest | Next.js — the meta-framework hole, and what it did to the thesis
Quality cycle, weakest-spoke-first: this spoke scored depth 0/6 on 2026-08-13, the worst in the
corpus, and its own ## Open questions named the reason — the charter took React meta-frameworks
from ../static-site-wiki on 2026-08-12 and none had been paged. Coverage edge 4. Closed one third
of it with nextjs, from Next's own project-structure documentation (T1, v16.3.1, docs dated
2026-07-21).
It was not a hole-filling exercise. The spine's axis ran from the team decides to the
framework decides, with wasp at the framework end. Next.js does not sit on that line: it decides
routing structure absolutely (folders are URL segments, page is what makes a route public, the
reserved filenames are the API) and refuses code organization in writing — "unopinionated," three
strategies listed and deliberately unranked. One of those three is feature-first-structure,
demoted from an argument to a menu item.
The uncomfortable consequence is now in synthesis.md: the spoke's two loudest sources
(flutter-large-app-structure, micro-frontends-migration) argue about the half the dominant
framework leaves open, which explains the argument's lack of resolution better than either source
does.
Also recorded: route groups (marketing)/(shop) organize "by team" inside one deployable,
while micro-frontends means a team that deploys independently — same vocabulary, opposite
deployment story.
Integrity at time of writing: 0 orphans (lowest inbound count 2), 0 broken links, 0 dupes. Open questions 0/6 → 1/6 partly answered; edge 4 half-closed, Remix and Gatsby still open.
[2026-08-20] ingest | Next.js 16.3: Instant Navigations, Up to 90% Less Dev Memory and Faster Builds (InfoQ)
Routed here by the hub (runner-up: ../dev-tooling-wiki). InfoQ news item by Daniel Curtis, 20 Aug
2026, on the Next.js 16.3 release → nextjs-16-3 (T3, NewsArticle, stable).
Tier T3, stated on the page. Every performance figure — 90% less dev memory, 21.5GB→2GB on
Vercel's own dashboard, 5.5× repeat CI builds, +22% requests under load — originates with vercel,
which makes the framework and sells the hosting. InfoQ relays them and originates none, which matches
the standing posture on the infoq entity page in ../platform-ops-wiki. The independent readings
are one early adopter via The Register (~4GB→1.5GB) and a Reddit thread.
Why it is an architecture source. nextjs had given the spine a clean split: routing decided,
code organization refused. 16.3 does not fit either half. cacheComponents makes cache boundaries a
component-level structural decision, ships as an opt-in flag, and is stated to become the default
in a future major version — so the axis is not who decides but who decides, and when.
Recorded in synthesis.md as a new section, plus two consequences: the edge runtime is
deprecated (a deployment target retracted after the Node-streams rewrite), and static exports do
not work with Partial Prefetching (the ../static-site-wiki seam drawn as an exclusion, from the
meta-framework side).
No version conflict with nextjs. That page read the docs at v16.3.1 on 2026-08-15, which looked earlier than a release covered on 20 August — but The Register covered 16.3 on 4 August, so the article postdates the release and the two pages agree.
Not duplicated here: Turbopack's disk cache and TypeScript 7 belong to ../dev-tooling-wiki
(cross-linked to typescript-7-go-compiler, whose numbers are measured rather than relayed); the
throughput and memory claims are ../webperf-wiki material. The version-matched AGENTS.md block
16.3 generates is noted as context, not filed to ../agentic-tooling-wiki — per charter, agent
machinery bolted onto a framework does not move the subject.
Entities: no new nodes. infoq and vercel already exist as canonical nodes elsewhere and are linked cross-wiki; Daniel Curtis is named in prose but not paged, following the spoke's own precedent (the author of flutter-large-app-structure is not a node either — the publisher is).
Open questions 6 → 7 (added: what it costs when a framework changes its mind). Growth edges unchanged — Remix and Gatsby are still the coverage gap, and a release note does not close it.
[2026-08-22] ingest | Module Federation (via quality cycle)
module-federation — the project's own documentation and repository (module-federation/core,
MIT, 2,618★/430 forks/61 open issues, created 2020-10-24, pushed 2026-08-21, v2.8.2 of 2026-08-06,
Rspack + Webpack). T1 under tier by the claim: the load-bearing content is the artifact's own
mechanism — roles, configuration keys, negotiation rules — which is checkable against the software.
The benefits list ("improve performance," "lower the overall size of your applications") is the maker
speaking about how well its own thing works, carries no measurement, and is flagged on the page rather
than graded.
Closes coverage edge 7, which had said the mechanism was "named repeatedly as the mechanism and never described" — micro-frontends-migration names it four times and describes it nowhere. Third coverage edge to close cleanly on first contact (nextjs, react were the others); the spoke's question edges have still never closed cleanly.
It did not just fill the hole. synthesis.md has framed boundary enforcement as two mechanisms,
deployment versus discipline. The shared scope is a third, and the new spine section ranks it below
both: shareKey must match on both sides or negotiation silently does not happen; singleton: true
loads the higher version and warns the party that asked for the lower one; a requiredVersion
mismatch resolves to "the smallest version available." So violations show up as two copies of React
in a browser, in production, rather than as a failed build or a review comment. The corpus already
held the field evidence and had not connected it — Mezzalira's React Router downgrade against Module
Federation is this negotiation, done by hand.
Two more things kept. The tool defines itself as "an architectural pattern for the decentralization of JavaScript applications (similar to microservices on the server-side)" — the analogy an open question asks about, asserted by the tooling as a definition. And what it federates is a module, so adopting it decides nothing about ownership; it serves a shared component library exactly as well. Against wasp (decides everything) and nextjs (decides routing, refuses code organization), this one decides nothing while calling itself an architecture.
New edge 8 records the residue: shared reintroduces the coupling micro-frontends are chosen to
avoid, and nothing here measures what that costs. No dedup collision — no page in any spoke mentioned
Module Federation except one line in micro-frontends-migration.
[2026-08-25] ingest | The singleton that stopped being one (via research pass)
Edge 8 half-closed with one T1 source, hunted for hub ## Most wanted #27:
module-federation-singleton-postfix-bug (module-federation/core issue #4078). A team on
rslib/rsbuild shared a library as singleton: true with requiredVersion: '2.2.2-release.99'; the
consumer asked for '*'; each remote loaded its own copy anyway. Drop the prerelease suffix and the
same config works, which is the reporter's own control and what makes this a defect rather than a
misconfiguration.
It is the spoke's first named version-negotiation incident, and it is the runtime-enforcement finding happening to somebody: the build passed, no error named the cause, and the symptom class is a broken React context. The trigger is ordinary release engineering, which is the part worth carrying — nobody chooses a prerelease suffix expecting it to change module sharing.
Verified against the GitHub API rather than the rendered page: filed 2025-09-18, two comments, closed
2025-12-02 with state_reason: not_planned and the single label no-issue-activity. Closed by
inactivity, not by a decision, so the behaviour is neither fixed nor documented as intended.
Not closed. One report is not an accounting — no duplicated bytes, no time-to-detection, nothing
about the team upgraded from under. Successor edge 8a asks for that. The write-ups that do carry
figures (11.9 MB micro-frontend bundles; a 7.5 → 10.5 MB regression from duplicate copies) are
consultancy marketing with no stated method, rejected at the T1/T2 research bar and deliberately
not ingested. module-federation updated in place; index.md gains one entry. Entities: 0 created.
[2026-10-05] ingest | EmDash 1.0 (Cloudflare Blog)
Routed from the hub; runner-up static-site-wiki (Astro is the developer surface; EmDash is server-rendered and
database-backed, so it sits on this side of that spoke's charter). Source page emdash-1-0, T3, published 2026-09-28.
The spoke's first runtime plugin-isolation boundary: capabilities declared by the plugin and approved by an
admin, enforced by Dynamic Workers or workerd, plus an AT Protocol registry where publishers hold their own
signed records. Added as the fourth enforcement mechanism in synthesis, and the one that fails closed.
Rests on a vendor announcement; no audit, escape history or paid-plugin case is cited, so it is held T3 and
growth edge 3 notes it. Entities: 0 created (cloudflare, astro and cloudflare-workers already
paged in sibling spokes).
[2026-10-07] research | edge 8a hunted — nothing at the bar
Searched for a measured cost of shared runtime dependencies in Module Federation. The only academic hit (Lando & Hasselbring, arXiv 2501.18225) proposes an approach and measures nothing; the blog figures are assumptions. Edge stays open; cooldown to 2026-10-21.