Your CRA build, shareable with one curl
react-scripts build still does what it always did: a complete static bundle in build/. If you're maintaining a CRA app, sharing that build is one POST — no platform account required.
Drop your Create React App report here — get a live link
.zip, folder, or single .html — free, no account, live for 7 days.
The artifact dead-end
CRA is in maintenance mode, but plenty of production apps still run it — and their deploy story shouldn't require migrating first. A build/ folder is a build/ folder.
Sending a teammate 'pull the branch and npm start' for a visual check is a ten-minute detour for a ten-second question.
Two lines to a live link
Build your output like you already do, then hand the folder to the action:
Build the app
npm run build.github/workflows/ci.yml
- uses: bitgate/ship-page-action@v1
if: always()
with:
path: build/Or with plain curl — no account needed
cd build && zip -qr - . | curl -fsS -X POST https://ship.page/deploy \
-H "Content-Type: application/zip" \
--data-binary @- | jq -r .urlpath: build/ deploys exactly what the tool wrote — no detection to configure. The link goes in the job summary — add comment: true and it lands on the pull request too.
What you get
- The build/ folder deploys as-is — the default absolute asset paths (/static/…) resolve cleanly at the drop's subdomain root
- Works like serve -s build, but public: hashed JS and CSS load exactly as CRA emitted them
- When you migrate to Vite, the recipe is identical — dist/ instead of build/ (see the Vite page)
Questions
Isn't CRA deprecated?
Yes — new apps should start on Vite (see the Vite recipe). This page is for the many existing apps that still build with react-scripts.
Does client-side routing work?
The entry page works everywhere. Drops serve files as-is with no rewrite rules, so history-mode deep links behave like on any plain static host — HashRouter links work fully.
How long do links live?
Anonymous drops expire after 7 days. On a paid plan you control ttl — or set it to never expire.
Try it on your next run
Anonymous deploys need no account and no key — paste the step, get a link. When you want stable URLs that redeploy in place, an API key and a name are all it takes.
Need to share the report with someone outside GitHub? How to share a GitHub Actions artifact without a login.