Nuxt 4 Migration and Architecture
SonicToolLab uses Nuxt 4 for server rendering, file-based routing, server APIs, and a shared Vue component architecture. This article focuses on the Nuxt 4 changes we can verify in this repository rather than making universal performance claims.
1. The New Directory Structure
One of the first things you'll notice in Nuxt 4 is the refined folder structure. The move towards an app/ directory (which is where our pages/, components/, and assets/ now live) parallels modern trends in frameworks like Next.js, providing a cleaner separation between logic and configuration.
- Separated contexts: UI code lives under
app/, whileserver/,public/, configuration, and shared infrastructure remain at the project root. - Auto-imports: Components and composables follow Nuxt conventions, reducing repeated imports while preserving separate client and server contexts.
2. Performance & The Core Engine
Nuxt 4 reorganizes data fetching, module ordering, TypeScript project contexts, and application directories. Actual loading performance still depends on page code, third-party libraries, caching, and deployment configuration.
- Route splitting: Tool pages are separate routes, allowing browser-only libraries to be loaded where they are needed.
- Context-specific types: Nuxt generates separate app, server, shared, and build-time TypeScript configurations.
3. Nitro Server Integration
Nuxt uses Nitro as its server engine and produces a deployable .output directory. In this project, Nitro discovers handlers under server/api/ and middleware under server/middleware/. Longer AI jobs use explicit queue and webhook handlers; this repository does not currently use Nitro's Task API.
4. Why Nuxt 4 is Perfect for Tool Sites
Building a site with 30+ tools requires modularity. Nuxt 4's component architecture allowed us to build shared UI logic (like input areas, copy-to-clipboard buttons, and SEO meta injectors) once and reuse them across all tools.
💡 Developer Note
Check the generated bundle and target platform limits before deployment. Browser-heavy routes such as OCR and PDF conversion still require deliberate lazy loading and real-device testing; the framework alone does not guarantee a fast page.
Conclusion
The choice of Nuxt 4 wasn't just about using the latest tech; it was about providing the best possible user experience while maintaining a scalable codebase. As Nuxt 4 continues to evolve, we will keep implementing new features to keep this toolbox at the cutting edge.