<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob" -->

---
title: Announcing protoc-gen-validate v1.0 and our plans for...
description: Buf announces protoc-gen-validate (PGV) reaches v1.0 after six years in alpha, locking in the existing annotations, code generation, and libraries with no...
canonical: https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Announcing protoc-gen-validate v1.0 and our plans for v2.0 · Buf | daily.dev
og:description: Buf announces protoc-gen-validate (PGV) reaches v1.0 after six years in alpha, locking in the existing annotations, code generation, and libraries with no...
og:url: https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob
og:image: https://api.daily.dev/og/posts/5TBWLqKOb.png
og:image:alt: Announcing protoc-gen-validate v1.0 and our plans for v2.0 · Buf
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Announcing protoc-gen-validate v1.0 and our plans for v2.0 · Buf

**[Buf Blog](https://daily.dev/sources/buf)** · 4 min read · 0 upvotes · 0 comments

## Summary

Buf announces protoc-gen-validate (PGV) reaches v1.0 after six years in alpha, locking in the existing annotations, code generation, and libraries with no material changes so current workflows remain stable. Alongside this, Buf reveals plans for v2.0, rebranded as Protovalidate, which will replace PGV's template-based generator with a CEL-based implementation for consistent cross-language behavior, user-defined constraint expressions, and customizable, mutable error messages. A Go release candidate for Protovalidate is expected in early June, with other languages following, plus a migration guide from PGV.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://buf.build/blog/protoc-gen-validate-v1-and-v2>

## Questions this post answers

### Is protoc-gen-validate (PGV) stable enough to use in production now that it's v1.0?

Yes, protoc-gen-validate reached v1.0 after six years labeled alpha, and the v1.0 release includes no material changes to existing annotations, code generation, or libraries. It simply tags the existing state of the project as stable, so projects can continue relying on it without any changes to current workflows.

_daily.dev helps engineers track protobuf tooling changes like this before committing to a validation library._

### What is Protovalidate and how does it differ from protoc-gen-validate?

Protovalidate is the planned v2.0 successor to protoc-gen-validate, rebuilt around Common Expression Language (CEL) instead of PGV's template-based code generator. It promises consistent behavior across languages, user-defined CEL expressions for complex and cross-field constraints, and custom error messages that are mutable at runtime for features like internationalization. A Go release candidate was expected in early June with other languages to follow, plus a migration path from PGV.

_developers choosing a protobuf validation approach can follow tooling shifts like this on daily.dev._

### What are the main limitations of protoc-gen-validate (PGV) that led to a rewrite?

PGV's template-based code generator became rigid over years of organic growth, producing inconsistent rule support across languages due to differences in each language's protobuf code generation and runtime behavior. This made it infeasible to add commonly requested features such as custom error messages, arbitrary constraint expressions, shareable rules, and compatibility with the Buf Schema Registry's remote packages.

_teams weighing protobuf validation tools can track these tradeoffs as they surface on daily.dev._

## Similar posts on daily.dev

- [A faster Protovalidate · Buf](https://daily.dev/posts/a-faster-protovalidate-buf-skhp41uy2) · Buf Blog · 15 upvotes · 1 comments
- [Protobuf, JSON Schema, and OpenAPI · Buf](https://daily.dev/posts/protobuf-json-schema-and-openapi-buf-00wgyenfv) · Buf Blog · 7 upvotes · 0 comments
- [Changelog — Protox v2.1.0](https://daily.dev/posts/changelog-protox-v2-1-0-efppadpp8) · ElixirStatus · 1 upvotes · 0 comments
- [The modern Protobuf workflow · Buf](https://daily.dev/posts/the-modern-protobuf-workflow-buf-c2m7gywhe) · Buf Blog · 1 upvotes · 0 comments
- [Introducing the pkg.go.dev API](https://daily.dev/posts/introducing-the-pkg-go-dev-api-alzksimun) · Go · 51 upvotes · 0 comments

---

Tags: [#architecture](https://daily.dev/tags/architecture), [#backend](https://daily.dev/tags/backend), [#grpc](https://daily.dev/tags/grpc)

[View this post on daily.dev](https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Announcing protoc-gen-validate v1.0 and our plans for v2.0 · Buf","url":"https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob"},"datePublished":"2026-08-23T07:20:08.971Z","dateModified":"2026-08-23T07:20:30.660Z","description":"Buf announces protoc-gen-validate (PGV) reaches v1.0 after six years in alpha, locking in the existing annotations, code generation, and libraries with no...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5560c04abb5d11f5694bc242eec776e8?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5560c04abb5d11f5694bc242eec776e8?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Buf Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Buf Blog","logo":"https://media.daily.dev/image/upload/s--2YBgo_Nm--/f_auto,q_auto/v1787469605/logos/buf?_a=BAMAMicg0","url":"https://daily.dev/sources/buf"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"architecture,backend,grpc","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Buf Blog","item":"https://daily.dev/sources/buf"},{"@type":"ListItem","position":3,"name":"Announcing protoc-gen-validate v1.0 and our plans for v2.0 · Buf"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/announcing-protoc-gen-validate-v1-0-and-our-plans-for-v2-0-buf-5tbwlqkob#faq","mainEntity":[{"@type":"Question","name":"Is protoc-gen-validate (PGV) stable enough to use in production now that it's v1.0?","acceptedAnswer":{"@type":"Answer","text":"Yes, protoc-gen-validate reached v1.0 after six years labeled alpha, and the v1.0 release includes no material changes to existing annotations, code generation, or libraries. It simply tags the existing state of the project as stable, so projects can continue relying on it without any changes to current workflows. daily.dev helps engineers track protobuf tooling changes like this before committing to a validation library."}},{"@type":"Question","name":"What is Protovalidate and how does it differ from protoc-gen-validate?","acceptedAnswer":{"@type":"Answer","text":"Protovalidate is the planned v2.0 successor to protoc-gen-validate, rebuilt around Common Expression Language (CEL) instead of PGV's template-based code generator. It promises consistent behavior across languages, user-defined CEL expressions for complex and cross-field constraints, and custom error messages that are mutable at runtime for features like internationalization. A Go release candidate was expected in early June with other languages to follow, plus a migration path from PGV. developers choosing a protobuf validation approach can follow tooling shifts like this on daily.dev."}},{"@type":"Question","name":"What are the main limitations of protoc-gen-validate (PGV) that led to a rewrite?","acceptedAnswer":{"@type":"Answer","text":"PGV's template-based code generator became rigid over years of organic growth, producing inconsistent rule support across languages due to differences in each language's protobuf code generation and runtime behavior. This made it infeasible to add commonly requested features such as custom error messages, arbitrary constraint expressions, shareable rules, and compatibility with the Buf Schema Registry's remote packages. teams weighing protobuf validation tools can track these tradeoffs as they surface on daily.dev."}}]}
```

