The great thing about being a web developer being able to work with different technologies. Read about how I discovered a world away from WordPress by deep diving into Astro.
In the rapidly evolving landscape of frontend development, new tools emerge frequently, each promising to make web development faster, more efficient, or more enjoyable. One of the most exciting modern frameworks gaining traction is Astro. It’s often described as a static site builder with a fresh take on delivering fast websites by default, and it challenges the traditional paradigms popularised by tools like 11ty and Next.js.
In this article, we’ll explore Astro from the ground up: what it is, how it differs from similar tools, and how you can integrate modern APIs like Monday.com to build dynamic, scalable, and lightning-fast websites.
Astro is a modern static site generator designed for speed and flexibility. Unlike many frameworks that focus heavily on client-side JavaScript, Astro emphasizes shipping zero or minimal JavaScript to the browser by default. It achieves this through its innovative Islands architecture, where only interactive components load JavaScript, and the rest of the page remains static HTML.
Astro supports multiple UI frameworks in the same project — React, Vue, Svelte, Solid, and more — giving developers incredible flexibility. It also features:
The first step with Astro is usually to scaffold a project with a starter template. You’ll quickly notice how lightweight the project is and how fast builds complete. Unlike traditional React apps, you’re encouraged to write mostly static content with occasional interactivity.
The syntax is a blend of HTML, Markdown, and your favorite UI components. For example, creating a contact form or landing page is straightforward:
--- title: ContactUs --- <h1>{title}</h1> <formmethod="POST"action="/thanks-send-info"netlify> <inputtype="text"name="name"placeholder="Your Name*"required /> <inputtype="email"name="email"placeholder="Email*"required /> <buttontype="submit">Send Enquiry</button> </form>
If you prefer React, you can create React components and import them directly into Astro files. The React code runs only where needed:
LeadGenForm.jsxexportdefaultfunctionLeadGenForm() { return ( <formmethod="POST"action="/thanks-send-info"netlify> {/* form inputs here */} </form> ); }
And then use it in your .astro
page:
--- import LeadGenForm from '../components/LeadGenForm.jsx'; --- <LeadGenForm client:load />
The client:load
directive tells Astro to hydrate this component only on the client side, minimizing JavaScript sent by default.
Astro often gets compared to 11ty and Next.js, but it occupies a unique space between them.
11ty (Eleventy) is a very popular static site generator that is extremely flexible, minimal, and straightforward. It uses template languages like Nunjucks, Liquid, or plain HTML with JavaScript data files. It’s great for static sites, blogs, documentation, and projects where the entire site can be rendered as static HTML.
Astro, in contrast:
Thus, Astro feels like a natural evolution of 11ty with added support for modern frontend technologies and more advanced hydration patterns.
Next.js is a full-featured React framework with extensive support for server-side rendering (SSR), API routes, client-side rendering, and static site generation (SSG). It’s incredibly powerful and flexible, primarily focused on React apps.
In other words, if you want a React-centric app with full SSR and API support, Next.js is still the king. But if you want a blazing fast site that uses React (or other frameworks) only where necessary, Astro is often better.
One common challenge in modern web development is integrating third-party APIs to create dynamic content. Monday.com is a popular work management and project tracking tool with a powerful REST API. You can use Astro to fetch data from Monday.com’s API at build time or runtime and render it efficiently.
Monday.com’s API allows you to:
This makes it ideal for displaying project status, task lists, or dashboards on your website.
You can fetch data from Monday.com using Astro’s server-side support during static generation.
Example fetching Monday.com boards at build time:
/src/utils/mondayApi.jsexportasyncfunctionfetchMondayBoards(apiKey) { const response = awaitfetch('https://api.monday.com/v2', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: apiKey, }, body: JSON.stringify({ query: ` query { boards { id name items { id name column_values { text id } } } } `, }), }); const data = await response.json(); return data.data.boards; }
In your Astro page, you can call this function in the frontmatter:
--- import { fetchMondayBoards } from '../utils/mondayApi.js'; const boards = await fetchMondayBoards(import.meta.env.MONDAY_API_KEY); --- <h1>Monday.com Project Boards</h1> {boards.map(board => ( <section key={board.id}> <h2>{board.name}</h2> <ul> {board.items.map(item => ( <li key={item.id}> {item.name} - {item.column_values.map(col => col.text).join(', ')} </li> ))} </ul> </section> ))}
This example demonstrates fetching Monday.com data at build time, generating fully static HTML that updates on each build. This is perfect for public-facing dashboards or project overviews that don’t require live updates every second.
If you want to fetch Monday.com data client-side (e.g., user-specific or frequently updating data), you can build a React or Svelte component in Astro and hydrate it on the client:
import { useState, useEffect } from'react'; exportdefaultfunctionMondayDashboard() { const [boards, setBoards] = useState([]); useEffect(() => { asyncfunctiongetBoards() { const res = awaitfetch('/api/monday-boards'); // Your own serverless API proxyconst data = await res.json(); setBoards(data); } getBoards(); }, []); return ( <div> <h1>Monday Boards</h1> {boards.length === 0 ? ( <p>Loading...</p> ) : ( boards.map(board => ( <divkey={board.id}> <h2>{board.name}</h2> <ul> {board.items.map(item => ( <likey={item.id}>{item.name}</li> ))} </ul> </div> )) )} </div> ); }
You can add this component inside your Astro project with client:load
or client:idle
to hydrate it on demand.
Tailwind CSS works great with Astro out of the box. You can configure Tailwind in your Astro project and style components consistently. For example, the contact forms or landing pages you build can use Tailwind’s utility classes for rapid styling.
One issue I did have was with forms. Because 11ty is purely static, it creates pure HTML forms with worked really well with Netlify forms. Really simple, and really simple to automate different processes using tools like Zapier. Astro has a slightly different build process and because it us not purely static, Netlify struggled to picked up it's forms. There is a workaround of creating a copy of your forms as a static form in the public folder for netlify to pick up - but this felt unwieldy and not conducive to future proofing. Luckily, serverside functions are easy to setup in Netlify, so I went with this method instead.
Astro uses a file-based routing system similar to Next.js, but its primary focus is static sites. It’s less opinionated about API routes, so for complex backend logic or API proxies, you typically run a separate server or serverless functions.
Astro is a fantastic choice when:
It’s less suited when you need a full React app with complex SSR or API routes integrated tightly, or global context/state storage, where Next.js may be a better fit.
Compared to 11ty, Astro offers richer interactivity with multiple frontend frameworks and a smoother developer experience for modern JavaScript users.
Astro is shaping the future of web development with its innovative approach to minimal JavaScript shipping and multi-framework support. Whether you're building a marketing site, blog, or a small dashboard, Astro gives you the power and flexibility to create fast, modern websites that delight users and developers alike.
If you haven’t tried Astro yet, it’s definitely worth exploring. And with integrations like Monday.com, you can bring dynamic project data directly to your website in a simple, elegant way.
Helping businesses with all aspects of their online presence
“Steven has gone over and above to deliver the most amazing website for me and I am absolutely thrilled with it. His patience through my numerous changes and his vision in getting it just right has been fantastic. I would highly recommend him to anyone looking for a new website and have already done so to colleagues and friends. Thank you Steven for everything!”