Convert Gumroad to single page app powered fully by React
Make the Gumroad creator dashboard an SPA, instead of rendering each page at a different URL and requiring a full page load.
Bounty: $1K per task (will gradually increase it over time to finish the smaller ones first) OSS reviewer (initial reviews and feedback): @Pradumn27
- [ ] New Product (
/links/new) - [ ] Edit Product (
/links/:id/edit) - [ ] Bundle Edit (
/bundles/:id) - [x] Affiliated Products (
/products/affiliated) - [x] Archived Products (
/products/archived) - [x] Collab Products (
/products/collabs) - [ ] Followers
- [x] Main page (
/followers) - https://github.com/antiwork/gumroad/pull/2280 by @MayaRainer - [ ] API endpoints
- [x] Main page (
- [x] Workflows (
/workflows) - https://github.com/antiwork/gumroad/pull/2005 by @Pradumn27- [x] Workflows new (
/workflows/new) - [x] Workflows edit (
workflows/:id/edit)
- [x] Workflows new (
- [x] Emails Page - https://github.com/antiwork/gumroad/pull/2434 by @Devwill2 with additional contributions from @stefanbinoj
- [x] Emails (
/emails) - [x] Published Emails (
/emails/published) - [x] Scheduled Emails (
/emails/scheduled) - [x] Draft Emails (
/emails/drafts) - [x] New Email (
/emails/new) + create action - [x] Edit Email (
/emails/:id/edit) + update action - [x] Delete Email action
- [x] Emails (
- [ ] Main Settings (
/settings) - [x] Profile Settings (
/settings/profile) - https://github.com/antiwork/gumroad/pull/2320 by @MayaRainer - [x] Payment Settings (
/settings/payments) - https://github.com/antiwork/gumroad/pull/2420 by @Pradumn27 - [x] Password Settings (
/settings/password) - https://github.com/antiwork/gumroad/pull/2420 by @Pradumn27 - [x] Team Settings (
/settings/team) - https://github.com/antiwork/gumroad/pull/2420 by @Pradumn27 - [x] Advanced Settings (
/settings/advanced) - https://github.com/antiwork/gumroad/pull/2420 by @Pradumn27 - [x] Third Party Analytics Settings (
/settings/third_party_analytics) - https://github.com/antiwork/gumroad/pull/2420 by @Pradumn27 - [ ] UTM Links (
/dashboard/utm_links) - [x] Following (
/dashboard/audience) - [x] Payouts (
/payouts) - https://github.com/antiwork/gumroad/pull/2384 by @yashranaway - [ ] Help Center
- [ ] Articles (
/help) - [x] Support tickets (
/support) - https://github.com/antiwork/gumroad/pull/2317 by @yashranaway
- [ ] Articles (
- [x] Library (
/library) - https://github.com/antiwork/gumroad/pull/2287 by @4arjun - [x] Reviews (
/reviews) - https://github.com/antiwork/gumroad/pull/2314 by @Devwill2 - [x] Wishlists (
/wishlists) - https://github.com/antiwork/gumroad/pull/2287 by @4arjun - [x] Following Wishlists (
/wishlists/following) - https://github.com/antiwork/gumroad/pull/2287 by @4arjun - [x] Affiliates Page - https://github.com/antiwork/gumroad/pull/2395 by @yashranaway '
- [x] Affiliates (
/affiliates) - [x] Affiliates new (
/affiliates/new) + create action - [x] Affiliates edit (
/affiliates/:id/edit) + update action - [x] Affiliates Onboarding (
/affiliates/onboarding)
- [x] Affiliates (
- [ ] Collaborators Page
- [ ] Collaborators (
/collaborators) - [ ] Collaborators new (
/collaborators/new) + create action - [ ] Collaborators edit (
/collaborators/:id/edit) + update action - [ ] Incoming Collaborators (
/internal/collaborators/incomings)
- [ ] Collaborators (
- [x] Tax Center Page - https://github.com/antiwork/gumroad/pull/2274 by @vishaltelangre
- [x] Tax Center (
/payouts/taxes) - [x] Tax Center download form (
/payouts/taxes/:year/:form_type/download) - [x] Tax documents (
/internal/tax_documents) -> move to optional prop of tax_centers main endpoint
- [x] Tax Center (
Why
This will save a lot of people time when navigating around Gumroad.
@slavingia I’m interested in working on this. Can I work on this issue?
Feel free, we don't assign issues – just note this is a large, difficult task that mostly senior and staff engineers can solve.
@slavingia Do you want to cover all the routes in the SPA, or only the ones shown in the image?
Hi!
My PR converts the Gumroad dashboard to a Single Page Application (SPA) with React Router v6, instant navigation, persistent sidebar, and robust error handling. It includes full E2E test coverage (Playwright), performance improvements, and is backward compatible with all existing functionality.
Please review for:
-SPA navigation (no page reloads) -API integration and error handling -TypeScript compliance -Backward compatibility -Complete E2E test coverage -Feature flag support
Let me know if you need anything else—thanks for reviewing!
Could you show a e2e test suite passing in the pr description?
@slavingia please check the new PR description; e2e test passing screenshot included.
@Pradumn27 _a
This should remain open until done I think, so make sure there isn't a "fixes #856" or it'll keep closing this automatically upon merge.
Could you give me a checkboxes list of all pages left? Then we can track them in the main description.
- [ ] New Product (
/links/new) - [ ] Edit Product (
/links/:id/edit) - [ ] Bundle Edit (
/bundles/:id) - [ ] Affiliated Products (
/products/affiliated) - [ ] Archived Products (
/products/archived) - [ ] Collab Products (
/products/collabs) - [ ] Followers (
/followers) - [ ] Workflows (
/workflows) - [ ] Workflows new (
/workflows/new) - [ ] Workflows edit (
workflows/:id/edit) - [ ] Emails (
/emails) - [ ] Emails (
/emails/published) - [ ] Emails (
/emails/scheduled) - [ ] Emails (
/emails/drafts) - [ ] Main Settings (
/settings) - [ ] Profile Settings (
/settings/profile) - [ ] Payment Settings (
/settings/payments) - [ ] Password Settings (
/settings/password) - [ ] Team Settings (
/settings/team) - [ ] Advanced Settings (
/settings/advanced) - [ ] Third Party Analytics Settings (
/settings/third_party_analytics) - [ ] UTM Links (
/dashboard/utm_links) - [ ] Following (
/dashboard/audience) - [ ] Payouts (
/payouts) - [ ] Support (
/help) - [ ] Library (
/library) - [ ] Reviews (
/reviews) - [ ] Wishlists (
/wishlists) - [ ] Following Wishlists (
/wishlists/following) - [ ] Affiliates (
/affiliates) - [ ] Affiliates Onboarding (
/affiliates/onboarding)
@slavingia, please use this checklist
It is still assigned or is it still open to PR?
You're welcome to contribute!
Would be great to have an update on this.
@slavingia the Workflows part just got merged (#2005). It was a big piece, took a while to review and make it right.
@slavingia could you add a bounty structure to this like we had in #1055 and #1057 please? Would be happy to contribute to this
Yep can do as soon as the tailwind/admin app ones are done, so those remain the focus until they're complete