Push. It’s live.
Connect a GitHub branch or run one command. MDRN builds your app, checks that it answers, then serves it.
What you get.
Every push, released.
Push to the connected branch and MDRN builds that commit, then releases it when the build succeeds.
Your framework, built the way it expects.
Next.js, Nuxt, SvelteKit, Astro and Angular build with no configuration. A few features work differently: see Frameworks.
A failed build changes nothing.
A new release must answer before it takes a request. A failed step leaves the serving release as it was.
Roll back in one step.
Release an earlier build again from the console. It goes through the same check as any release.
From push to Live.
One push to main: MDRN builds the commit, runs new migrations, checks that the release answers, and only then sends it traffic.
- Pushmain · Show stock level on product cards
- BuildInstall, build, test, bundle
- MigrateNew migrations run
- CheckThe release answers
- Liveacme-web.mdrn.page
Questions.
Does my Next.js app run as it is?
It builds with no configuration file and no MDRN package, but a few features work differently. Data kept between requests (incremental static regeneration, the data cache) is not kept yet, so those pages render on each request, and next/image serves images at their original size. Native packages such as bcrypt and better-sqlite3 do not run: the build stops and says what to use instead. A server that calls listen() runs as it is, once the build can tell its port. Frameworks has the details.
Which other frameworks build?
Nuxt, SvelteKit, Astro and Angular are built in our tests on every change to the builder, like Next.js. React Router, Remix, SolidStart, TanStack Start, Analog, Vike and Waku build the same way but are not yet in our test projects. Vite apps, static sites and fetch-handler apps such as Hono build too.
Who can open my app before I go live?
Only you and the members of your workspace. Everyone else gets a page saying the app is not live yet.



