Problem
Request Commerce is being sunset. Some bug fixes were implemented in Request Commerce that were never backported to Easy Invoice.
Proposed Solution
- Identify all bug fixes in Request Commerce that don't exist in Easy Invoice ✅
- Backport those fixes to Easy Invoice
- Archive the Request Commerce repository
Bug Fixes to Backport
| File |
Fix |
PR Reference |
next.config.mjs |
Add typedRoutes: true experimental feature for compile-time route checking |
Commerce #8 |
src/components/invoice/invoice-form/invoice-form.tsx |
Add crypto-to-fiat validation - show error if enabled but no payment method selected |
Commerce #9 |
src/components/invoice/invoice-form/invoice-form.tsx |
Layout fix: change flex items-start to flex items-end for invoice item row alignment |
Commerce #9 |
src/app/(dashboard)/home/page.tsx |
Route fix: change /payments to /payouts |
Commerce #8 |
src/app/(dashboard)/subscriptions/_components/subscription-plan-link.tsx |
Use typed route paths with as const for type safety |
Commerce #8 |
src/app/(dashboard)/invoices/me/_components/invoice-me-link.tsx |
Use typed route paths with as const for type safety |
Commerce #8 |
src/components/version-badge.tsx |
Use <a> tag with rel="noopener noreferrer" for external links instead of Next.js Link |
Commerce #8 |
src/components/header.tsx |
Use <a> tag with rel="noopener noreferrer" for external links |
Commerce #8 |
Considerations
- The repos diverged in both directions - Easy Invoice also has improvements Commerce doesn't have (better schema validation with superRefine, due date validation, payout confirmation components)
- After backporting, archive the Request Commerce repository
- Marketing needs Easy Invoice working well before website launch (end of Feb/early March)
- The typed routes changes require enabling
typedRoutes: true in next.config first
Problem
Request Commerce is being sunset. Some bug fixes were implemented in Request Commerce that were never backported to Easy Invoice.
Proposed Solution
Bug Fixes to Backport
next.config.mjstypedRoutes: trueexperimental feature for compile-time route checkingsrc/components/invoice/invoice-form/invoice-form.tsxsrc/components/invoice/invoice-form/invoice-form.tsxflex items-starttoflex items-endfor invoice item row alignmentsrc/app/(dashboard)/home/page.tsx/paymentsto/payoutssrc/app/(dashboard)/subscriptions/_components/subscription-plan-link.tsxas constfor type safetysrc/app/(dashboard)/invoices/me/_components/invoice-me-link.tsxas constfor type safetysrc/components/version-badge.tsx<a>tag withrel="noopener noreferrer"for external links instead of Next.jsLinksrc/components/header.tsx<a>tag withrel="noopener noreferrer"for external linksConsiderations
typedRoutes: truein next.config first