Graceful Shutdown in Node.js - Safer Restarts and Deploys
Stop dropped requests and half-finished jobs when a Node.js app restarts - handle SIGTERM and SIGINT, close the server, drain connections and close pools.
· 5 min read
Next.js Hosting
Run full-stack Next.js on South African servers. Connect GitHub, pick a repository and branch, and every push builds and deploys your app: server components, API routes, middleware and incremental static regeneration included.
App Router, server components, API routes, middleware and ISR on Node.js 20, 22 or 24.
Connect GitHub once and pick the repository (private ones too); every push to your branch deploys, and GitHub shows each deployment on the commit.
Live step-by-step deployment logs with your build output, one-click redeploys and rollbacks to an earlier commit.
Secrets are encrypted with AES-256-GCM at rest and never shown again after saving.
Servers in South Africa keep round trips short for South African visitors.
Let's Encrypt certificates for your custom domain and free app address.
Every plan deploys from GitHub on each push, with build logs, rollbacks, environment variables, free SSL and databases. Pay monthly or yearly; no VAT is added.
For side projects and portfolios.
R79/month
or R790/year. No VAT is added.
Git-driven workflow for freelancers.
R199/month
or R1 990/year. No VAT is added.
Production workloads and small teams.
R479/month
or R4 790/year. No VAT is added.
Host all your clients, white-labelled.
R1 199/month
or R11 990/year. No VAT is added.
| Plan | StarterR79/month | DeveloperR199/month | BusinessR479/month | AgencyR1 199/month |
|---|---|---|---|---|
| Apps | 1 | 3 | 10 | 30 |
| RAM | 512 MB | 1 GB | 2 GB | 4 GB |
| vCPU | 0.5 | 1 | 2 | 4 |
| NVMe storage | 5 GB | 20 GB | 50 GB | 150 GB |
| Traffic | 100 GB | 500 GB | Unmetered | Unmetered |
| Databases | 1 | 3 | 10 | 40 |
| Push to deploy from GitHub | Yes | Yes | Yes | Yes |
| Preview deploys per branch | No | Yes | Yes | Yes |
| Rollbacks and redeploys | Yes | Yes | Yes | Yes |
| Backups | Weekly, 28 days | Daily, 7 days | Daily, 30 days | Daily, 30 days |
| Team seats | 0 | 0 | 3 | Unlimited |
| Priority support | No | No | Yes | Yes |
Sign in with GitHub and allow NewHost access to your repositories; GitHub's permission covers public and private ones (an organisation may need to approve NewHost first). The token is stored encrypted, and you can revoke it on GitHub at any time.
Pick the repository and branch, the framework and Node.js version. Install, build and start commands are filled in for the framework; change them if your project differs.
Add your secrets (database URL, API keys) before the first deploy. Values are encrypted at rest and only the names are shown after saving.
NewHost creates your site, fetches the commit, installs dependencies, runs your build script and starts the app, with a live log of every step and your build output.
Every push to the branch deploys again; GitHub shows the deployment status on the commit. Pushes to other branches can deploy as previews on plans that include them.
Use the free app address or connect your own domain; a free Let's Encrypt certificate is issued during the deploy.
NewHost uses your GitHub access only to list your repositories, add the push webhook to the ones you connect, fetch your code and show deployment statuses. It never changes your code.
A push to your production branch queues a deployment. One runs at a time per app; if several pushes arrive while one runs, the latest one is deployed next.
On plans with previews, a push to any other branch deploys to its own address (branch--app on the platform domain). Idle previews are removed automatically.
Every deployment has a step-by-step log with timestamps and your npm output, updated live in the dashboard. Secrets are kept out of the log.
Roll back to the commit of any earlier successful deployment, redeploy the current one, or cancel a deployment that is still queued.
Encrypted with AES-256-GCM at rest and passed to your app on each deploy; values are never shown again after saving.
A free address on the platform domain from the first deploy, or your own domain with a free Let's Encrypt certificate.
Create MySQL or PostgreSQL databases on your app's server from the app's page (the engines that server offers), up to your plan's number.
Deploy an app or call one of its URLs on a cron schedule or once, in South African time.
Paste a repository URL instead of connecting GitHub: deploy from the dashboard or on a schedule, and GitLab pushes deploy through a signed webhook per app.
Next.js
Runs on Node.js 24, 22, 20. Default start file server.js, build script "npm run build".
Node.js
Runs on Node.js 24, 22, 20. Default start file index.js, no build step.
Express
Runs on Node.js 24, 22, 20. Default start file app.js, no build step.
Nuxt
Runs on Node.js 24, 22, 20. Default start file .output/server/index.mjs, build script "npm run build".
Static site
Built with your build script (optional) and served as files from the output folder, e.g. dist; no Node.js process runs.
Server-side rendering, static generation, incremental static regeneration, API routes, middleware and the App Router. Apps run on Node.js 20, 22 or 24.
Sign in with GitHub once and allow NewHost access to your repositories. Pick a repository and branch for your app and NewHost adds a webhook to the repository: each push to that branch queues a deployment, which installs dependencies, runs your build script and restarts the app. GitHub shows the deployment's status on the commit.
Yes. GitHub's repository permission covers public and private repositories (GitHub has no read-only option for private ones). NewHost stores the token encrypted and uses it only to list your repositories, add the deploy webhook to the ones you connect, fetch your code and show deployment statuses; it never changes your code. You can revoke it on GitHub at any time (Settings > Applications > Authorized OAuth Apps); private repositories then stop deploying.
On plans with preview deploys, a push to any other branch deploys it to its own address (branch--app on the platform domain), so you can check it before merging. Previews that are no longer used are removed automatically.
The deployment stops at the failed step and its log shows your npm output with the error. Fix it and push again, redeploy, or roll back to the commit of an earlier successful deployment.
Dependencies are installed with npm, so commit a package-lock.json. yarn and pnpm install commands are accepted and run as an npm install; the build command must be a script in your package.json.
Yes. Every app gets a free address on the platform domain; point your own domain at the app or register one through NewHost, and a free SSL certificate is issued.
Every app plan includes databases you create next to your app from its page, up to your plan's number. For more, or for databases used outside NewHost apps, add a database plan.
Yes. Scheduled tasks deploy an app or call one of its URLs on a cron schedule or once at a set time, in South African time.
Yes: create the app with the repository URL instead of connecting GitHub. Deploy from the dashboard or on a schedule; GitLab pushes deploy through a signed webhook per app.
Stop dropped requests and half-finished jobs when a Node.js app restarts - handle SIGTERM and SIGINT, close the server, drain connections and close pools.
· 5 min read
Host an Astro site in South Africa - static or server-rendered with the Node adapter - with build and start commands, environment variables and Git deploys.
· 5 min read
How to build a correct sitemap.xml and robots.txt in Next.js - what to list, honest lastmod dates, keeping previews out of Google and submitting it.
· 6 min read
Connect GitHub, pick a repository and branch, and every push builds and deploys your app. Questions about your stack? Talk to us first.