Files
marketplaces/docs/FUTURE_FEATURES.md
sdarbinyan a95ca37a4b
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
docs: quantify the initial-bundle icon-set bloat finding
11MB of the ~14MB initial bundle is the full @lucide/angular icon set
despite clean named imports for ~85 icons - confirmed by build inspection,
previously undocumented (existing note only covered the two lazy chunks).
Root cause is upstream tree-shaking, not app code. Real fixes (package
upgrade or dropping the dependency) need sign-off before touching.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 21:53:05 +04:00

2.8 KiB
Raw Blame History

Future Features

Nice-to-have, non-blocking work — no client decision needed, just not worth doing now. Verified against current repo state 2026-07-26.

Cart payment modal → app-dialog migration

.bank-payment-modal on the cart page is a custom overlay component with its own focus-trap (added during the WCAG audit) rather than the shared app-dialog primitive. Functionally and accessibly complete as-is — migrating it to the shared primitive is a composition cleanup, deliberately deferred across every polish pass so far because it touches multi-step payment state.

Angular 22 upgrade

Researched, not executed. Estimated ~23.5 days, needs the barry-cache dependency fix and a Node version bump first. Explicitly out of scope for the Backend Finalization Sprint. Plan: docs/ANGULAR22_PLAN.md.

Bundle splitting

Initial (eagerly-loaded) bundle carries an ~11 MB chunk that is the entire @lucide/angular icon set, confirmed 2026-08-05 by inspecting build output — app-icon/IconComponent only ever needs the ~85 icons named in icon-registry.ts, but esbuild is not eliminating the other ~1500+ unused icon classes from @lucide/angular's single-file fesm2022/lucide-angular.mjs bundle, despite the package declaring sideEffects: false and every usage in this codebase being clean named imports (no wildcard imports found). Root cause not fully diagnosed — likely each icon's Angular component metadata assignment isn't PURE-annotated in that build, so esbuild can't drop unreferenced classes within the single shared module even though it can drop unreferenced exports. The package ships no per-icon deep-import path as a workaround (single fesm file only). Real fix options, neither attempted here (touches a dependency, needs sign-off): (a) check for a newer @lucide/angular release with better tree-shaking, (b) drop the dependency and hand-roll inline SVG path data for just the ~85 used icons (removes a dependency, matches this repo's minimal-deps convention, but is real work — extracting/verifying 85 icon paths). This alone is roughly 6x the size of the two lazy chunks below combined and, unlike them, ships to every visitor on first load.

Two lazy chunks are also large: project-editor (~1.0 MB), catalog-container (~330375 kB, varies by build). No mechanical split found yet for either — needs a dedicated profiling task, ideally under real backend latency per docs/NEXT_PHASE.md Phase 3.

Homepage hero-to-categories spacing investigation

A dead-space gap between the hero and categories section on the storefront home page traces to bootstrap mock config (widget/section padding values in the dev fixture), not a confirmed code defect. Needs reproduction with real tenant data before it's worth investigating further — not a bug until it's confirmed to happen outside the mock fixture.