Dancing Gopher

Go on Airplanes

The lightning-fast, modern web framework with unmatched simplicity

Go on Airplanes vs Next.js

Everything React developers love about Next.js, but simpler, faster, and more powerful.

Lightning Fast Performance

GoA's Go-powered backend handles concurrent requests with ease, delivering response times that leave JavaScript frameworks in the dust.

Request Handling Speed 32x Faster

Zero-Config Heaven

Forget complex webpack configs and dependency hell. GoA works out of the box with sensible defaults and minimal setup required.

No node_modules
No build steps

Intuitive Development

GoA's development workflow is straightforward and efficient. Changes reflect instantly with lightning-fast hot reloading.

Hot Reload Speed 10x Faster

Feature Comparison

Feature Go on Airplanes Next.js
Server-Side Rendering Built-in & Optimized Yes
File-Based Routing Simple & Intuitive Complex
API Routes Go-Powered Speed JavaScript-Limited
Build Time Lightning Fast Slow for Large Apps
Dependency Footprint Minimal Massive node_modules

Go on Airplanes API Route

package api

import (
	"goonairplanes/core"
	"net/http"
	"time"
)

func Handler(ctx *core.APIContext) {

	response := map[string]interface{}{
		"message":   "Hello from Go on Airplanes API route!",
		"timestamp": time.Now().Format(time.RFC3339),
		"method":    ctx.Request.Method,
		"path":      ctx.Request.URL.Path,
		"params":    ctx.Params,
		"success":   true,
	}

	ctx.Success(response, http.StatusOK)
}
                        

Next.js API Route

import { NextRequest, NextResponse } from 'next/server';

type APIContext = {
  method: string;
  path: string;
  params: Record;
  timestamp: string;
  request: NextRequest;
};

type SuccessResponse = {
  message: string;
  timestamp: string;
  method: string;
  path: string;
  params: Record;
  success: true;
};

function createContext(req: NextRequest): APIContext {
  return {
    method: req.method,
    path: req.nextUrl.pathname,
    params: Object.fromEntries(req.nextUrl.searchParams.entries()),
    timestamp: new Date().toISOString(),
    request: req,
  };
}

function buildSuccessResponse(ctx: APIContext): SuccessResponse {
  return {
    message: 'Hello from TypeScript on Next.js!',
    timestamp: ctx.timestamp,
    method: ctx.method,
    path: ctx.path,
    params: ctx.params,
    success: true,
  };
}

export async function GET(req: NextRequest) {
  const ctx = createContext(req);
  const response = buildSuccessResponse(ctx);
  return NextResponse.json(response, { status: 200 });
}

                        
"After years of programming with NextJS and struggling with hydration errors — or performing infernal rituals just to get a CRUD working — I decided to switch to Golang and create GoA: what NextJS should’ve always been."
Júlia Klee
creator of GoA, project lead, and main maintainer.

Ready to build something amazing?

Get started with Go on Airplanes today and experience web development like never before.