Reasons Why I Left Next.js
- Slow Perceived Performance: Although Next.js follows good performance practices, I noticed that page transitions felt sluggish. I felt that something as simple as displaying an article page took far too long.
- Complicated Internationalization: I tried implementing NextIntl to handle multiple languages, but the process was complex and prone to errors.
- Not What My Project Needs: After some reading, I concluded that Next.js is better suited for more complex applications requiring intense interactivity, many dynamic routes, or server-side functions. My blog is a static content site simple, minimalist, and focused on reading.
Why Astro Is the Right Choice
Astro seemed like the solution that best fits my goals:
- Excellent Performance: It delivers optimized static files by default with very fast loading times. This is ideal for a blog where content doesn't change very often.
- Minimalist Design: I don't need JavaScript everywhere; this reduces the initial payload size and improves the user experience.
- Simple Internationalization: I implemented i18n quickly and efficiently without needing to install additional packages or write complex code. Here is the basic configuration example:
import { defineConfig } from "astro/config"
export default defineConfig({
i18n: {
defaultLocale: "en",
locales: ["es", "en", "pt-br"],
}
})
https://docs.astro.build/es/guides/internationalization/
Astro fits my blog perfectly making it minimalist, fast, and content-focused. Although Next.js is a powerful and very capable tool, for this personal project, I prefer the simplicity and performance that Astro offers. With Astro, I am creating exactly what I want: a fast-loading static website without unnecessary complications.