Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 07:40
· 127 commits to main since this release

🚀 Nitro GraphQL v1.0.0 - Production Ready Release

"GraphQL is not just a query language; it's a new way to think about APIs and client-server interaction."

We're thrilled to announce Nitro GraphQL v1.0.0 - the first stable release of our comprehensive GraphQL integration for the Nitro ecosystem! This milestone represents months of development, community feedback, and battle-testing to create the most developer-friendly GraphQL solution for Nitro-powered applications.

🎯 What is Nitro GraphQL?

Nitro GraphQL is a standalone module that seamlessly integrates GraphQL servers into any Nitro-based application with automatic type generation, file watching, and zero-configuration setup. Whether you're building with Nuxt, standalone Nitro, or any other Nitro-compatible framework, you can now add a production-ready GraphQL API in minutes.

✨ What's New in v1.0.0

🚀 Production-Ready Stability

  • Battle-tested architecture with comprehensive error handling
  • Memory-optimized hot reloading for development
  • Production-ready bundling with smart chunking and dynamic imports
  • Enhanced type safety throughout the entire codebase

🔧 Auto-Generated Client SDK (v0.5.0+)

One of our biggest features - automatic generation of type-safe GraphQL clients for Nuxt applications:

// Automatically generated from your GraphQL files
import { createGraphQLClient } from '#graphql/client'

const client = createGraphQLClient()
const { users } = await client.GetUsers() // Fully typed!

📝 Enhanced Type Generation

  • Server types: Complete TypeScript definitions for resolvers and schema (#graphql/server)
  • Client types: Auto-generated operation types and SDK (#graphql/client)
  • Hot reload support: Types update automatically during development
  • Improved codegen options for better type safety and performance

🎮 Developer Experience Improvements

  • Named export pattern: Export multiple resolvers from single files
  • Auto-discovery: Automatically scans and loads GraphQL files
  • Zero configuration: Sensible defaults with optional customization
  • File-based organization: Domain-driven resolver and schema structure
  • Built-in Apollo Sandbox: Interactive GraphQL playground

🌐 Universal Framework Support

Works seamlessly with any Nitro-powered framework:

  • Nuxt.js: First-class integration with dedicated module
  • Standalone Nitro: Direct integration for custom applications
  • Any Nitro-compatible framework: Universal compatibility

🏗️ Key Features

Multi-Framework GraphQL Support

  • GraphQL Yoga: Lightweight, performant GraphQL server
  • Apollo Server: Enterprise-grade GraphQL implementation
  • Seamless switching between frameworks

Intelligent File Organization

server/graphql/
├── schema.graphql              # Main schema
├── users/
│   ├── user.graphql           # User schema
│   ├── user-queries.resolver.ts
│   └── create-user.resolver.ts
└── posts/
    ├── post.graphql
    └── post-queries.resolver.ts

Powerful Utilities

  • defineResolver() - Complete resolver definitions
  • defineQuery() - Query-only resolvers
  • defineMutation() - Mutation-only resolvers
  • defineSubscription() - Real-time subscriptions
  • defineType() - Custom type resolvers
  • defineSchema() - Schema validation with Zod/Valibot

Type-Safe Development

Auto-generated TypeScript types for seamless development:

Server-side types (#graphql/server):

import type { User, Post, CreateUserInput } from '#graphql/server'

export const userResolver = defineResolver({
  Query: {
    users: async (): Promise<User[]> => {
      return await db.users.findMany() // Fully typed
    }
  }
})

Client-side types (#graphql/client):

import type { GetUsersQuery, CreateUserInput } from '#graphql/client'

const users = ref<GetUsersQuery['users']>([])
const createUser = async (input: CreateUserInput) => {
  return await client.CreateUser({ input }) // Type-safe
}

Advanced Features

  • Custom scalars (DateTime, JSON, etc.)
  • Error handling patterns
  • Authentication & authorization
  • Database integration (Prisma, Drizzle compatible)
  • Health check endpoints

📊 Performance & Reliability

Optimized for Production

  • Smart bundling: Efficient code splitting for optimal performance
  • Memory management: Optimized hot reloading without memory leaks
  • Type caching: Intelligent type generation caching
  • Minimal overhead: Lightweight runtime with maximum functionality

Enhanced Error Handling

  • Comprehensive error reporting during development
  • Production-safe error messages
  • Type-safe error handling in resolvers
  • Detailed logging for debugging

🔄 Migration & Breaking Changes

Named Exports (Breaking Change)

The module now requires named exports for all resolvers:

// ❌ v0.x (deprecated)
export default defineResolver({ ... })

// ✅ v1.0.0 (required)
export const userResolver = defineResolver({ ... })
export const postResolver = defineResolver({ ... })

Updated Import Paths

More explicit import paths for better developer experience:

// Import utilities
import { defineResolver } from 'nitro-graphql/utils/define'

// Auto-imports still work (recommended)
export const resolver = defineResolver({ ... })

🚀 Quick Start

Installation

# Choose your GraphQL framework
pnpm add nitro-graphql graphql-yoga graphql
# or
pnpm add nitro-graphql @apollo/server graphql

Configuration

// nitro.config.ts
export default defineNitroConfig({
  modules: ['nitro-graphql'],
  graphql: {
    framework: 'graphql-yoga', // or 'apollo-server'
  },
})

Your First Schema

# server/graphql/schema.graphql
type Query {
  hello: String!
  users: [User!]!
}

type User {
  id: ID!
  name: String!
  email: String!
}

Your First Resolver

// server/graphql/hello.resolver.ts
export const helloResolver = defineResolver({
  Query: {
    hello: () => 'Hello from GraphQL!',
    users: async (_, __, { storage }) => {
      return await storage.getItem('users') || []
    },
  },
})

That's it! Your GraphQL API is ready at /api/graphql 🎉

📈 Community & Ecosystem Growth

Growing Adoption

  • Production deployments across various industries
  • Active community contributing features and improvements
  • Framework integrations expanding the ecosystem

Community Contributions

Special thanks to our contributors who helped make v1.0.0 possible:

  • Enhanced type safety improvements
  • Client SDK development
  • Documentation enhancements
  • Bug fixes and performance optimizations

🔮 What's Next?

Planned Features

  • Subscription support for real-time applications
  • Advanced caching strategies
  • Database adapter ecosystem (Prisma, Drizzle, etc.)
  • VS Code extension for enhanced development
  • Performance monitoring tools

Community Roadmap

  • Framework examples and integrations
  • Video tutorials and learning resources
  • Testing utilities and best practices
  • Deployment guides for various platforms

🙏 Acknowledgments

This release wouldn't be possible without:

  • Our amazing community for feedback and contributions
  • The Nitro team for building an incredible foundation
  • GraphQL ecosystem maintainers for excellent tooling
  • Early adopters who tested and provided valuable feedback

🚨 Important Notes

Node.js Requirements

  • Node.js 20.x or later required
  • pnpm recommended as package manager
  • Corepack enabled for optimal experience

TypeScript Support

  • Full TypeScript support with auto-generated types
  • IDE integration with IntelliSense and autocompletion
  • Type safety from schema to runtime

📚 Resources

🎉 Get Started Today

npx create-nitro-app my-graphql-app
cd my-graphql-app
pnpm add nitro-graphql graphql-yoga graphql

Ready to revolutionize your API development? Nitro GraphQL v1.0.0 brings the power of GraphQL to the Nitro ecosystem with unmatched developer experience and production-ready reliability.


Happy coding! 🚀

The Nitro GraphQL Team


📋 Full Changelog

v1.0.0 (2024-12-XX)

  • 🎉 MAJOR: First stable release
  • 🚀 FEAT: Production-ready architecture
  • 📝 DOCS: Updated README with GraphQL philosophy
  • 🔧 BREAKING: Named exports required for resolvers
  • PERF: Optimized bundling and memory usage

v0.5.0 (Previous)

  • 🚀 FEAT: Auto-generate Nuxt ofetch GraphQL client for quick start
  • 📦 DEPS: Update dependencies in pnpm-workspace.yaml

v0.4.0 (Previous)

  • 🛠️ FIX: Remove unused GraphQL mutation variable types from SDK
  • 🔧 FEAT: Add codegen options to client type generation
  • 🔥 FIX: Hot reload client types
  • 🎯 FIX: Improve type definitions for server options

v0.3.0 (Previous)

  • 🚀 FEAT: Create default GraphQL server directory and examples
  • 🔧 FIX: Update GraphQL schema definitions
  • 📝 DOCS: Add TypeScript examples

v0.2.0 (Previous)

  • 🚀 FEAT: Add CI/CD workflow configuration
  • 📖 FEAT: Add contribution guidelines
  • 🔧 FEAT: GitHub Actions for automated releases

v0.1.0 (Previous)

  • 🎉 FEAT: Initial release
  • 🚀 FEAT: Apollo Server and GraphQL Yoga support
  • 📝 FEAT: Auto-discovery and type generation
  • 🔧 FEAT: Nitro and Nuxt integration

For detailed technical changes, see the git commit history.