Professional Gatsby Application Development
- Before starting, make sure you have Node.js (>=16.x) and npm installed on your system. If you don’t have them yet, download them from the official Node.js website.
- Gatsby is a React-based static site generator with support for dynamic rendering (SSR) and incremental builds. Choose a starter template when initializing your project.
- Create an account on Square Cloud at the signup page and ensure you have an active paid plan if required here.
Gatsby Configuration
Initialize a new Gatsby project using the official initializer:Creating a Gatsby Project
Start the development server:http://localhost:8000.
To generate a simple page add src/pages/index.js with:
Creating the Square Cloud Configuration File
Learn more about: how to create the configuration file for Square Cloud.
The
squarecloud.app file defines your application’s name, description, version, entry point, and other essential settings.Purchasing a Plan Before Uploading the Project
Before deploying your Gatsby site to Square Cloud, ensure you have an active plan that meets your application’s resource needs. Static Gatsby sites are resource-efficient and usually work well on Basic or Standard plans. If you use server-side rendering, preview servers, or heavy build-time processing, consider Standard or Pro.Not sure how much RAM and CPU a Gatsby site needs? For static sites resource needs are small; SSR or build-heavy sites depend on content size and concurrency. Start with Standard for dynamic use cases.
Building Gatsby for Production
Build the production output before uploading:public/ folder by default.
Express library
To serve your static project on Square Cloud, ensure your server correctly delivers static files. To use Node.js with Express, a common setup is:server.js
Adjust
dist paths parameters to your project build folder. If it is in a folder inside build or dist, use it path instead.Serve library
Installing the Serve Library
To install theserve library, navigate to your project directory in the terminal and run the following command:
14.2.3 of the serve library. If you want to install the latest version, you can omit the @14.2.3.
Configuring the Startup Script
After installing theserve library, you need to configure your project's startup script to use serve. To do this, open your project's package.json file and add a new script called start:prod:
start:prod script, serve -s build -l 80 does the following:
serve: This is the command to start theserveserver.-s dist: The-soption serves thedistdirectory in single-page application mode. This means all not-found requests will be redirected toindex.html. Thedistdirectory is commonly created when you runnpm run build.-l 80: The-loption followed by80tellsserveto listen on port 80. Port 80 is the default port for HTTP traffic.
Adjust
dist parameter to your project build folder. If it is in a folder inside build or dist, use it path instead.SSR
For SSR builds that emit a server bundle just configure main file toserver.js
Uploading the Project to Square Cloud
After preparing your project, you can upload it to Square Cloud using the dashboard or the CLI.- Upload via Dashboard
- Upload via CLI
Access the Square Cloud Dashboard and upload your project files.

Additional Resources
For more information about Gatsby, visit the official documentation here.Troubleshooting
Custom Domain
To use a custom domain (e.g.,
mysite.com) instead of the default URL https://mysite.squareweb.app/, you need the Standard plan or higher. The subdomain is defined by the SUBDOMAIN field in the configuration file. See: How to set up your custom domain.Minimum RAM Requirements
Minimum: 512MB RAM for simple websites/APIs. For sites with frameworks (Next.JS, React, Vue, Angular, etc.), we always recommend at least 1GB RAM. For larger applications, use more RAM to avoid LACK_OF_RAM error and ensure performance.
Could not find this site.
Check if the subdomain/domain matches what's configured in the SUBDOMAIN field or in the custom domain settings. If you just uploaded the site, wait up to 60 seconds for Square to enable first access.

Site took too long to respond...
Check if you correctly configured port 80 and host 0.0.0.0 in the application. We recommend using Square's forced environment variables: PORT and HOST from the 
.env file.

