Skip to main content

Overview

This page outlines the supported features and known limitations for the gRPC integration (both plugins and services) with the Cosmo Router. Development is in progress to expand support and address these limitations.

Feature Support Overview

The following table lists each gRPC integration feature, its current status, and a brief description.

πŸ”„ Roadmap

Development is in progress to address these limitations and expand gRPC integration capabilities, with the following features planned for future releases.

Schema Linting

When designing your GraphQL schema, you might encounter some of the limitations mentioned above. To ensure compatibility with the Cosmo Router’s gRPC integration, we provide schema linting through protographic that validates your GraphQL schema against gRPC compatibility requirements.

How Linting Works

The linting process analyzes your GraphQL schema and identifies potential compatibility issues with gRPC:
  • Warnings: Non-breaking issues that highlight features that may not work as expected
  • Errors: Breaking issues that prevent successful gRPC integration and must be fixed

Warnings vs Errors

Warnings

Warnings allow the generation process to complete but inform you about potential limitations:
  • Process continues: The protobuf generation will finish successfully
  • Feature limitations: Highlights GraphQL features that may not be fully supported in gRPC
  • Non-breaking: Your plugin will still function, but certain features may behave differently
Example Warning: Using nullable list items like [String]! will generate a warning since this pattern isn’t directly supported in protobuf.

Errors

Errors halt the generation process and require immediate attention:
  • Process stops: The protobuf generation will fail and must be resolved
  • Breaking issues: Indicates schema patterns that cannot be translated to gRPC
  • Must be fixed: You need to modify your schema before proceeding
Example Error: Using unsupported GraphQL features that have no protobuf equivalent.

Linting Output

When you run the generation command, you’ll see output similar to:

Feature Gates

Some linting rules are controlled by feature gates and may evolve over time:
  • Experimental features: Some rules may be relaxed as gRPC integration capabilities expand
  • Backward compatibility: Existing linting behavior is maintained for stability
  • Future improvements: Rules may be removed or modified as new features become available
Tip: Pay attention to warnings during development. While they don’t prevent your plugin from working, they help you understand which GraphQL features may have limitations in the gRPC context.

Best Practices

  1. Address errors first: Fix all linting errors before proceeding with development
  2. Review warnings carefully: Understand the implications of warnings for your use case
  3. Test thoroughly: When warnings are present, test the affected functionality carefully
  4. Stay updated: Check for updates to linting rules as the gRPC integration evolves

Common Linting Issues

Resources & Community

For questions, updates, and community support:

GitHub Repository

⭐ View the repository for updates and issue tracking

Release Notes

πŸ“’ Latest feature updates and changes in each release

Discord Community

πŸ’¬ Get help and join discussions with the community

gRPC Concepts

πŸ“š Learn about gRPC concepts and patterns
See also: gRPC Services Β· Plugins