TopFans web frontend / code review / 23 September 2026

Two takes on standalone routes

PR 10826 and PR 10827 start from the same commit and convert the same five feature areas. Their main runtime difference is how many chunks a normal link-in-bio visit loads.

Base 5345fee1fc10826 c320b59a9f10827 e5389aa59620 files each

Recommendation

Prefer PR 10826. It puts the /bio child routes and preview component in one 59,639 byte browser chunk. PR 10827 splits them into a 319 byte routes chunk followed by a 59,537 byte component chunk, adding a sequential load for the normal /bio/:userName path. Both preserve the outer /bio lazy boundary, and both QA builds have the same 12.30 MB initial bundle.

Before merging, check whether nested /creator or /creators auth and setup URLs are supported. PR 10826 also avoids the redundant CUSTOM_ELEMENTS_SCHEMA that PR 10827 adds to the creators component. No compile blocker was found in either PR.

What differs

AreaPR 10826PR 10827
/bio/:userNameStatic component import. Routes and preview share one 59,639 byte lazy chunk. One load after the parent match.loadComponent splits the child route and preview into 319 and 59,537 byte chunks. The normal username path waits for both.
Creators schemaNo component schema. Angular template compilation passes.Adds CUSTOM_ELEMENTS_SCHEMA. Compilation also passes, but the schema is unnecessary for the current template.
QA buildPasses. 12.30 MB raw initial bundle and 109 browser JavaScript files.Passes. 12.30 MB raw initial bundle and 111 browser JavaScript files.
Other changesSame routes, generated files, standalone imports, and deleted NgModules.Import ordering and formatting differ in a few files. No behavior change found there.

Direct diff between heads: six files, 24 additions and 17 deletions. Compare the commits.

What both PRs change

  • Replace feature NgModules with standalone components for comparison-page, marketing-page, sub-page-view, creators-home, and link-in-bio-fan-preview.
  • Use loadComponent for the creators and sub-page routes and for generated marketing and comparison routes. The /bio parent loads a standalone Routes array. Router source.
  • Update the route generator as well as its checked-in output. Regenerating the slug routes should keep the new imports.
  • Move template dependencies into each standalone component. The creators page still imports SharedModule and MarketingPageSharedModule. Both QA builds report the same 12.30 MB initial bundle.

Review findings

  1. Compatibility check / both PRs

    Confirm the old nested creators URLs can go away

    The deleted CreatorsHomeModule imported AuthModule and SetupProfileModule. Those modules register child routes such as login, signup, and setup-profile. After this migration, /creator and /creators load a single component, so those nested routes are no longer registered there.

    No in-repo link to a nested creators auth or setup URL appeared in the search. The Fable review's SSR check found that /creators/login now falls through to the generic :id/:subPageUrl route and returns a sub-page shell with HTTP 200. The component's missing-data path then navigates to not-found in the browser. If external links use the old URL, add an explicit redirect to the canonical /auth/login route.

    Auth routes · Setup routes

  2. Cleanup / PR 10827

    Drop the creators component schema unless it has a purpose

    PR 10827 adds CUSTOM_ELEMENTS_SCHEMA to CreatorsHomeComponent. The same template compiles in PR 10826 without it. Keeping the schema permits unknown dashed elements and may hide a future missing import.

  3. Tradeoff / bio route

    The extra lazy boundary costs a request on the normal path

    PR 10827 can load the /bio route table without its preview component when the child wildcard matches. For the normal /bio/:userName path, the browser must load its 319 byte routes chunk before it discovers the 59,537 byte component chunk. PR 10826 loads one 59,639 byte chunk. The QA builds establish chunk structure, but neither review measured real network timing.

    10826 route · 10827 route

Verification

  • Compared each head with the same merge-base parent and compared the two heads directly.
  • Ran Angular compiler template/type checks for both isolated PR heads with ngc -p tsconfig.app.json --noEmit. Both exited successfully.
  • Built both isolated heads with ng build --configuration=qa --prerender=false. Both passed with a 12.30 MB raw initial bundle. Inspected the browser output to confirm the one-chunk versus two-chunk /bio split.
  • The Fable review reports matching SSR results for seven routes on both heads, including the /creators/login fallback. Those SSR requests were not repeated for this page.
  • A full dev build remains unavailable because src/environments/environment.dev.ts is absent. Browser interaction, prerendering, and white-label project builds remain unchecked.

PRs and source