gumroad icon indicating copy to clipboard operation
gumroad copied to clipboard

Convert Gumroad to single page app powered fully by React

Open slavingia opened this issue 8 months ago • 24 comments

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] Workflows (/workflows) - https://github.com/antiwork/gumroad/pull/2005 by @Pradumn27
    • [x] Workflows new (/workflows/new)
    • [x] Workflows edit (workflows/:id/edit)
  • [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
  • [ ] 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
  • [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)
  • [ ] Collaborators Page
    • [ ] Collaborators (/collaborators)
    • [ ] Collaborators new (/collaborators/new) + create action
    • [ ] Collaborators edit (/collaborators/:id/edit) + update action
    • [ ] Incoming Collaborators (/internal/collaborators/incomings)
  • [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

Why

This will save a lot of people time when navigating around Gumroad.

Image

slavingia avatar Aug 14 '25 16:08 slavingia

@slavingia I’m interested in working on this. Can I work on this issue?

praveenkalady avatar Aug 14 '25 16:08 praveenkalady

Feel free, we don't assign issues – just note this is a large, difficult task that mostly senior and staff engineers can solve.

slavingia avatar Aug 14 '25 17:08 slavingia

@slavingia Do you want to cover all the routes in the SPA, or only the ones shown in the image?

AJ0070 avatar Aug 16 '25 04:08 AJ0070

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!

mxrcabrera avatar Aug 19 '25 04:08 mxrcabrera

Could you show a e2e test suite passing in the pr description?

slavingia avatar Aug 19 '25 13:08 slavingia

@slavingia please check the new PR description; e2e test passing screenshot included.

mxrcabrera avatar Aug 20 '25 02:08 mxrcabrera

@Pradumn27 _a

slavingia avatar Sep 19 '25 15:09 slavingia

@Pradumn27 _a

Thanks! Working on it.

Pradumn27 avatar Sep 19 '25 16:09 Pradumn27

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.

slavingia avatar Oct 09 '25 17:10 slavingia

Could you give me a checkboxes list of all pages left? Then we can track them in the main description.

slavingia avatar Oct 10 '25 13:10 slavingia

  • [ ] 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

Pradumn27 avatar Oct 10 '25 23:10 Pradumn27

It is still assigned or is it still open to PR?

RA9 avatar Oct 18 '25 08:10 RA9

You're welcome to contribute!

slavingia avatar Oct 20 '25 14:10 slavingia

Would be great to have an update on this.

slavingia avatar Nov 05 '25 17:11 slavingia

@slavingia the Workflows part just got merged (#2005). It was a big piece, took a while to review and make it right.

EmCousin avatar Nov 14 '25 09:11 EmCousin

@slavingia could you add a bounty structure to this like we had in #1055 and #1057 please? Would be happy to contribute to this

MayaRainer avatar Nov 14 '25 12:11 MayaRainer

Yep can do as soon as the tailwind/admin app ones are done, so those remain the focus until they're complete

slavingia avatar Nov 14 '25 15:11 slavingia