Runtime
Web
AlphaRun a Next.js or static Vite app in a Revyl Web session, from a bundle Revyl builds or a preview you already deploy.
Web is in alpha. To add it to your organization, email support@revyl.ai.
A Web app runs in a Chrome session that Revyl streams to your browser, at a desktop or mobile-sized viewport. Revyl either serves a bundle built from your recipe or opens a preview deployment you already host. Web builds covers both in detail; this page sets up a project and shows recipes for Next.js and static Vite.
Set up with an agent
Paste one prompt and your coding agent does the rest.
Setup prompt
Set up Revyl for this Web app. Read https://docs.revyl.com/frameworks/web.md and follow it. It's the current Revyl guide for this, so prefer it over anything you remember about Revyl. Web is in alpha: if Revyl says Web isn't enabled for my organization, stop and tell me to email support@revyl.ai. If the app already deploys previews, register those URLs with `revyl build upload --platform web --url <url> --app <web-app-id>`; otherwise add a recipe so Revyl builds a bundle. You're done when a Revyl Web session opens the app and you've given me its link. Ask me before anything that needs my login or approval.
Set up the project
revyl init creates the project config but doesn't detect Web frameworks, package managers,
or preview hosts, and it doesn't create a Web app. Create the app and add a profile yourself:
revyl init -y
revyl app create --name "My Web App" --platform webbuild:
profiles:
preview:
web:
app_id: <web-app-id>This app-ID-only profile is enough to register preview URLs and start sessions. To have Revyl
build a bundle, add your own setup commands, build commands, and output directory, as in the
examples below. A Web recipe can sit beside ios and android recipes in the same profile
without changing mobile setup.
If your app already deploys previews, keep that deploy and register each preview's HTTPS URL after it succeeds:
revyl build upload --platform web --url "$PREVIEW_URL" --app <web-app-id>
revyl device start --platform web --app <web-app-id>Next.js
This example assumes npm and output: "standalone" in your Next config; adapt the commands to
your workspace and lockfile. It packages the standalone server, .next/static, and public
(when present) into dist-revyl, and signs in through a test-only route:
build:
profiles:
preview:
web:
app_id: <web-app-id>
setup_commands: [npm ci]
build_commands:
- npm run build
- rm -rf dist-revyl && mkdir -p dist-revyl/.next
- cp -RL .next/standalone/. dist-revyl/
- cp -R .next/static dist-revyl/.next/static
- if [ ! -d public ]; then exit 0; fi; cp -R public dist-revyl/public
output_path: dist-revyl
run:
start: HOSTNAME=0.0.0.0 node server.js
port: 3000
secret_names: [REVYL_SIGN_IN_SECRET]
session:
auth_bypass:
sign_in:
path: /revyl-login
secret: REVYL_SIGN_IN_SECRETThe server must listen on 0.0.0.0 at the configured port. REVYL_SIGN_IN_SECRET is the
name of an encrypted organization launch variable, never its value.
Add the /revyl-login route only to test deployments, and have it issue a session the way your
app normally does. In the App Router, use app/revyl-login/route.ts (or src/app/...).
Folders that start with an underscore, such as app/__e2e__/login, are private and don't
become routes. Keep the secret out of NEXT_PUBLIC_* variables and browser code. The code the
route must verify is described in Web sign-in links.
Static Vite
For an npm site whose build writes dist/index.html:
build:
profiles:
preview:
web:
app_id: <web-app-id>
setup_commands: [npm ci]
build_commands: [npm run build]
output_path: distNo run block is needed: Revyl serves static output, and client-side routes load on reload or
deep link. Don't add a signing secret to a static frontend. If the site needs sign-in, add the
test-only route to its backend or use a hosted preview.
Build and open a session
revyl build --profile preview --platform web
revyl device start --platform webrevyl build runs on Revyl's build runners by default; add --local to build with your own
toolchain and upload the result. Check a screenshot and the signed-in account, then stop the
session with revyl device stop --session-id <session-id>.
Web starts don't run session.before_script. If a session needs test data, seed it before you
start, for example from the preview's own deploy.
Next steps
- Web builds: bundle limits, server apps, and registering previews from CI
- Sessions: start a Web session from the dashboard
- Proof of changes: have an agent exercise each pull request in a Web session