WebApps Deployment (permaweb-deploy)

How to use Arweave's permaweb-deploy with preview temporary deployments

circle-info

Inspired by the cookbook github action deployment guidearrow-up-right, permaweb-deploy is a Node.js command-line tool designed to streamline the deployment of web applications to the permaweb using Arweave. It uploads your build folder or a single file, creates Arweave manifests, and updates ArNS (Arweave Name Service) records via ANT (Arweave Name Token) with the transaction ID. sourcearrow-up-right

We have forked the original permaweb-deploy CLI to add support for Load S3 as an alternative upload option (through loaded-turbo-api) beside the default Turbo-Arweave permanent uploads.

Preview Feature in Details

the loadnetwork's permaweb-deploy forked CLI have the --preview feature flag, where if used, the web app (UI) is deployed on Load S3 as xANS-104arrow-up-right dataitem instead of having the permanent-only deployment option.

This feature unlocks missing features in permaweb deployment workflow: staging deployments. With this feature, you can deploy as you work with Vercel (dev UX), stage deployment as preview, promote to prod only when it is ok to commit the webapp ui permanently on Arweave.

circle-info

permaweb-deploy's --preview feature uses xANS-104 dataitems under the hood, enabling offchain temporary dataitems for staging deployments; however, thanks to xANS-104, migrating the temporary Arweave Manifest to Arweave (permanent) is a single anchoring click that maintains determinism and provenance.

Dev Guide

option 1: npmjs package install

npm i -g @loadnetwork/permaweb-deploy

option 2: dev install from source

git clone https://github.com/loadnetwork/permaweb-deploy
cd permaweb-deploy

pnpm install
pnpm build
pnpm link --global
circle-info

To use the @loadnetwork/permaweb-deploy CLI, you can use either load-permaweb-deploy or the fork's canonical permaweb-deploy cli name. to avoid conflicts, we advise using load-permaweb-dpeloy for load's fork, as in the examples below.

deploy

from your ui folder:

[dev] if you want to avoid linking, run it directly from the repo:

Example response:

Additionally you can access the Arweave Manifest JSON's raw payload using the /resolve/{dataitem_id} endpoint; example: https://gateway.s3-node-1.load.network/resolve/Uk-b10wtSSVShM3dg64XzaP9TOusnMsHirpWemb8b98arrow-up-right

anchor

to anchor load s3 preview (staging) deployment to Arweave while maintaining determinism and provenance:

to access deployments, either staging (temporary) or prod (arweave-settled), check the LS3 Dataitems gateways page

Last updated