Skip to content

Suggestions

Improvement recommendations for future projects based on the frontend implementation experience.

  1. Canvas/image export tests need realistic dimensions. Unit tests with 1x1 mock images pass but don’t validate coordinate-space geometry. For canvas-heavy features, add a Storybook play function that renders at realistic dimensions and asserts pixel output, or use a Playwright visual comparison.

  2. E2E page objects should use getByRole/getByLabel, not getByPlaceholder. The items.page.ts has 18 occurrences of getByPlaceholder('Item name*') — a single placeholder text change in the design system breaks nearly every item test. Design-system components should expose aria-label props to support structural locators. (Tracked in Arda-cards/arda-frontend-app#755 analysis section.)

  3. make ci not make check for ux-prototype. make check (lint + typecheck) misses Storybook play function failures and VRT regressions. Always run make ci before pushing.

  1. Context over callbacks from the start. When a component needs 3+ injectable behaviors sharing a common concern, use a React Context provider from the first version. The 4.x → 5.0.0 migration (3 callbacks → ImageUploadProvider) could have been avoided if the context pattern was chosen initially.

  2. Dual-mode infrastructure patterns should be documented early. The CDN signed-cookie vs signed-URL dual mode was a late discovery. Future features that depend on domain-scoped browser APIs (cookies, CORS, service workers) should audit Amplify preview / localhost compatibility during the design phase.

  3. Rate limiter should be documented as in-memory/per-instance. The current RateLimiter in the BFF is per-Node-process. In multi-instance Amplify deployments, rate limits aren’t shared. This is acceptable at current scale but should be called out in architecture docs.

  1. Rebase CHANGELOG verification. After any rebase involving CHANGELOG changes, run grep "## \[" on the file and verify: (a) all expected versions are present, (b) versions are in descending order, (c) CLQ will accept the result. Squash-merge + rebase is a known footgun.

  2. Pre-release design-system versions need explicit tracking. The common-module preview version (8.2.0-jmpicnic-DINTG-...) in operations PR #163 needs to be bumped to stable before merge. Consider adding a CI check that rejects pre-release dependency versions on PRs targeting main.


Copyright: (c) Arda Systems 2025-2026, All rights reserved