What this package is like to depend on
Last release 1 months ago
12 Jul 2026
Release timing varies
gaps range from 1 weeks to 4 months
Some releases are documented
notes for 3 of 8 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
28 releases · first in 2025
14 releases in the last 12 months
see the full history below
Release timeline
28 releases · Feb 2025 to Jul 2026Releases
latest 28-
1.1.012 Jul 2026Release notes
Open source →Ack 1.1.0
Ack 1.1.0 is a correctness-focused release that aligns runtime validation,
generated schemas, and tooling with their documented contracts. It does not
change the public Dart API surface.Validation and schema fixes
- Keep
safeParsenon-throwing for recoverable callback exceptions while
preserving DartErrorvalues so programming defects remain visible. - Bound direct, indirect, and wrapper-mediated lazy-schema recursion.
- Decode RFC 3339 date-times that use lowercase
tandzseparators. - Validate
multipleOf, IPv6, RFC 3339 date-times, range bounds, collection
limits, unions, and enum definitions consistently with JSON Schema. - Snapshot factory collections and correct schema/deep-collection equality.
- Preserve conflicting JSON Schema keywords through
allOf, and export exact
list/object sizes with the correct Draft-7 keywords.
Generator and tooling
- Reject nullable list element schemas during generation, matching Ack's
runtime list contract. - Use current
source_gendiagnostics without undeclared debug-file output. - Add stable full-output generator coverage.
- Make API checks, changelog updates, workspace setup, and root test orchestration
fail truthfully instead of producing false-green results.
Behavior changes and migration notes
Although the public API is unchanged, invalid or ambiguous inputs that were
previously accepted may now fail earlier:- Fix invalid schema definitions reported by construction-time
ArgumentErrors. - Put list nullability on the list (
Ack.list(item).nullable()), not its item. - Treat accumulated floating-point sums deliberately: round first or validate
integer minor units such as cents before applyingmultipleOf. - Refresh snapshots that assert the exact output of
toJsonSchema(). - Expect
AckExceptionfromparse()when a recoverable constraint or
refinement callback throws; inspect the underlying cause for diagnostics.
See the package changelogs for the complete behavior notes.
Release notes
Open source →Fixed
- Keep
safeParsenon-throwing when refinements or constraints throw recoverableExceptions, while preservingErrorvalues such asStateErrorso programming defects are not masked as validation failures. - Decode RFC 3339 lowercase
t/zseparators inAck.datetime(), which its own string validation already accepts (previously they failed at the decode step with a misleading "Codec decode failed" message). - Bound direct, indirect, wrapper-mediated, and fluent-copy lazy-schema alias recursion (previously unbounded and prone to stack overflow).
- Snapshot factory collections so a caller mutating the passed list or map can no longer corrupt a constructed schema.
- Correct behavior-based schema and deep-collection equality.
Behavior changes
No public API changed (verified with
dart_apitoolagainst 1.0.1); the following now reject inputs that previously passed or misbehaved silently.- Validate numeric
multipleOf, IPv6, and RFC 3339 date-time values strictly. Announced leap seconds are preserved byAck.string().datetime()but rejected byAck.datetime(), where Dart cannot represent them. (migration: some previously-accepted strings and numbers now fail validation.) - Reject invalid constraint configuration at construction — negative
lengths/item counts, non-finite numeric bounds,
min > maxranges,multipleOf <= 0, empty unions, empty or duplicate enum inputs, and unions that can yield nullable list items — all throwArgumentError. (migration: fix the schema definition; put nullability on the list viaAck.list(item).nullable().) toJsonSchema()merges conflicting duplicate keywords intoallOfand emitsmin/maxItemsandmin/maxPropertiesfor exact counts. (migration: refresh snapshot or golden tests of exported schemas.)parse()throwsAckException— instead of the raw callback error — when a constraint or refinement throws.
- Keep
-
1.0.104 Jul 2026Release notes
Open source →Release v1.0.1
This patch hardens recursive schemas built with
Ack.lazyagainst unbounded recursion.Bug Fixes
- Recursion depth guard for
Ack.lazy/LazySchema(#122): recursive schemas now
enforce a maximum recursion depth (default 100) on parse, runtime validation, and
encode. Previously, cyclic or arbitrarily deep input could recurse without bound and
risk a stack overflow. Exceeding the limit now fails fast with a descriptive validation
error (lazy_max_depth: "Maximum recursion depth (N) exceeded.") instead of crashing.
Improvements
Ack.lazy(...)accepts an optionalmaxDepth(defaultLazySchema.defaultMaxDepth
= 100; must be >= 1), carried throughcopyWith, equality, and serialization.- JSON Schema export warns that the runtime-only
maxDepthcheck can't be expressed via
$refand is omitted from the exported schema.
Behavior note: recursion is now capped at depth 100 by default. Structures that
legitimately nest deeper must pass an explicit highermaxDepth.The other packages (
ack_annotations,ack_generator,ack_json_schema_builder,
ack_firebase_ai) are version-aligned to1.0.1with no functional changes. - Recursion depth guard for
-
1.0.026 Jun 2026Release notes
Open source →Ack 1.0.0
Ack 1.0.0 is the first stable release of Ack, a schema validation library for Dart and Flutter. Ack helps you validate untrusted data at application boundaries, reuse the same schemas across runtime validation and JSON workflows, and generate typed wrappers when you want stronger ergonomics than map access.
Start with the documentation site or jump straight into the Quickstart Tutorial.
What is included
- Fluent schema definitions for strings, numbers, booleans, objects, lists, enums, literals, unions, discriminated unions, and recursive schemas.
- Validation rules for common constraints such as string length, patterns, email, UUID, URI, numeric ranges, list length, uniqueness, and custom checks.
- Clear error handling through
safeParse,SchemaResult, structured paths, and readable validation messages. - JSON serialization workflows for validating decoded API responses and working with validated data safely.
- Codecs for bidirectional conversion between wire values and Dart runtime values, including dates, datetimes, URIs, durations, enums, and custom conversions.
- Type-safe schema generation with
@AckType()for extension types, typed getters,parse, andsafeParse. - JSON Schema export through
toJsonSchema()and the reusable schema-model boundary for adapter authors. - Flutter form validation examples for using Ack schemas in form fields.
- Common recipes for API responses, reusable schemas, composition, enums, and other everyday validation tasks.
- API reference covering the stable surface in one place.
Packages
ack: core runtime validation library.ack_annotations:@AckType()annotation package.ack_generator: build_runner generator for typed schema wrappers.ack_json_schema_builder: adapter forjson_schema_builder.ack_firebase_ai: Firebase AI structured-output schema adapter.
For AI agents
Ack also publishes an
llms.txtindex with a compact overview of the packages, core APIs, code generation workflow, and common examples.Release quality
This release was validated with the full package test suites, documentation checks, example tests, and pub.dev dry-runs before publishing. All five packages are now available on pub.dev at version 1.0.0.
-
1.0.0-beta.1224 Jun 2026 pre-releaseRelease notes
Open source →ack 1.0.0-beta.12
ackBreaking
DoubleSchemaandNumberSchemanow reject non-finite values (NaN,Infinity,-Infinity) during runtime validation by default, aligning numeric schemas with JSON-safe values.- Removed the retired JSON Schema DTO converter APIs.
- Replaced the interim JSON Schema model-kind API with sealed
AckSchemaModelvariants and a canonicalAckSchema.toSchemaModel()adapter conversion.
Added
Ack.enumCodec<T extends Enum>(List<T> values)returns aCodecSchema<String, T>wrappingEnumSchema<T>.NumberSchemaExtensionsadds fluent numeric constraints toAck.number():.min,.max,.greaterThan,.lessThan,.positive,.negative,.multipleOf.
Changed
- Discriminated schemas are projected through union-owned discriminator branches.
- Defaults, const values, extension keywords, transformed metadata, composition, and JSON Schema constraints are preserved through the schema-model boundary.
Migration
- Re-run tests for code paths that parse or encode
double/numvalues. If a boundary must acceptNaN/infinities, model that value outside the JSON numeric schema path before validation.
ack_annotationsBreaking — Removed
AckModel,AckField, and decorator annotations. Only@AckType()remains.ack_generatorBreaking — Removed class-based schema generation. Only top-level
@AckType()schema variables and getters are supported.ack_firebase_ai- Added
toFirebaseAiResponseJsonSchema()for Firebase AI'sGenerationConfig.responseJsonSchemapath, plus committed golden fixtures and native fixture corpora. - Removed typed Firebase AI
Schemaconversion APIs — usetoFirebaseAiResponseJsonSchema()instead.
ack_json_schema_builder- Routes conversion through ACK's sealed
AckSchemaModelboundary and generic Draft-7 JSON Schema renderer; preserves defaults, const values, extension keywords, transformed metadata, and composition. - Removed the retired JSON Schema DTO converter path.
All five packages are released in lockstep at
1.0.0-beta.12.Release notes
Open source →Breaking Changes
DoubleSchemaandNumberSchemanow reject non-finite values (NaN,Infinity,-Infinity) during runtime validation by default, aligning numeric schemas with JSON-safe values.- Remove the retired JSON Schema DTO converter APIs.
- Replace the interim JSON Schema model kind API with sealed
AckSchemaModelvariants and canonicalAckSchema.toSchemaModel()adapter conversion.
Added
Ack.enumCodec<T extends Enum>(List<T> values)returns aCodecSchema<String, T>wrappingEnumSchema<T>. Use this when downstream code expects every value-shape to be aCodecSchema(e.g. a registry of codecs). Decode/encode are identity sinceEnumSchemaalready maps betweenTand the enum's.name.NumberSchemaExtensionsadds fluent numeric constraints toAck.number():.min,.max,.greaterThan,.lessThan,.positive,.negative, and.multipleOf.
Changed
- Project discriminated schemas through union-owned discriminator branches.
- Preserve defaults, const values, extension keywords, transformed metadata, composition, and JSON Schema constraints through the schema model boundary.
Migration
- Re-run tests for code paths that parse or encode
double/numvalues. If a boundary must acceptNaNor infinities, model that value outside the JSON numeric schema path before validation.
-
1.0.0-beta.1127 Mar 2026 pre-release -
1.0.0-beta.1025 Mar 2026 pre-release -
1.0.0-beta.904 Mar 2026 pre-release -
1.0.0-beta.803 Mar 2026 pre-releaseRelease notes
Open source →Release notes
Open source →- REFACTOR(schemas): centralize null/default handling and extract ObjectSchema helpers (#65).
- REFACTOR: apply DRY improvements to schema classes (#53).
- REFACTOR: deprecate withDescription in favor of describe (#46).
- REFACTOR: consolidate JSON schema utilities and reduce duplication (#40).
- REFACTOR: flatten constraints folder structure and add type prefixes (#28).
- REFACTOR: modernize constraint switch statements to expressions (#27).
- REFACTOR: simplify validation workflow by eliminating duplicate nullable handling (#17).
- REFACTOR: Improved json-schema support (#9).
- REFACTOR: consolidate constraint system and enhance validation pipeline (#8).
- FIX(generator): comprehensive fixes for primitives and correctness (#50).
- FIX: critical error handling, documentation, and immutability improvements for 1.0.0 (#29).
- FEAT(schemas): enforce Map-returning child schemas in discriminated unions (#67).
- FEAT(schemas): implement value-based equality for schemas and constraints (#63).
- FEAT: Firebase AI schema converter package and ACK improvements (#32).
- FEAT: add date/datetime validation with min/max constraints (#26).
- FEAT: add args getter for extension types with additionalProperties (#24).
- FEAT: simplify API compatibility checking with Dart script (#14).
- FEAT: prepare for 0.3.0-beta.1 release (#11).
- FEAT: Add discriminated union schema support with pattern matching (#6).
- DOCS: enhance documentation with detailed examples and error handling (#20).
- DOCS: Fix API inconsistencies across all documentation (#12).
-
1.0.0-beta.724 Feb 2026 pre-release -
1.0.0-beta.609 Feb 2026 pre-releaseRelease notes
Open source →Features
- Discriminated unions: Enforce Map-returning child schemas in discriminated unions (#67).
- Schema mapping API: Add
AckSchema.parseAsandAckSchema.safeParseAsfor validated-value mapping with consistentSchemaTransformErrorhandling.
Improvements
- Schemas: Centralize null/default handling and extract ObjectSchema helpers (#65).
Bug Fixes
- Schemas: Fixes to schema correctness including transformed schema defaults and list unique items constraint (#50).
-
1.0.0-beta.514 Jan 2026 pre-releaseRelease notes
Open source →Features
- Equality: Implement value-based equality for schemas and constraints (#63). All schema and constraint classes now properly implement
==andhashCodefor structural comparison.
Improvements
- Dependencies: Updated
metaandtestdependencies to latest versions (#56).
- Equality: Implement value-based equality for schemas and constraints (#63). All schema and constraint classes now properly implement
-
1.0.0-beta.429 Dec 2025 pre-releaseRelease notes
Open source →Breaking Changes
- Format metadata: Reduced built-in format guidance to 7 core formats (
email,uri,uuid,date,dateTime,ipv4,ipv6). Custom format strings are still supported via theformatproperty. withDescriptiondeprecated: Usedescribe()instead for setting schema descriptions.
Bug Fixes
- JSON Schema output: Now correctly adds null branch to
anyOf/oneOfcompositions whennullable: true, producing valid JSON Schema Draft-07 format.
Improvements
- DRY refactoring: Consolidated duplicate primitive schema parsers into one.
- Hardened schema type handling: Improved map validation and schema type handling.
- Consolidated JSON schema utilities: Reduced duplication across JSON schema utilities.
- Format metadata: Reduced built-in format guidance to 7 core formats (
-
1.0.0-beta.209 Oct 2025 pre-releaseRelease notes
Open source →- REFACTOR: simplify validation workflow by eliminating duplicate nullable handling (#17). (71d694ab)
- REFACTOR: Improved json-schema support (#9). (d4da5d94)
- REFACTOR: consolidate constraint system and enhance validation pipeline (#8). (e6161a39)
- FEAT: add args getter for extension types with additionalProperties (#24). (3bf284ef)
- FEAT: simplify API compatibility checking with Dart script (#14). (d309f2c2)
- FEAT: prepare for 0.3.0-beta.1 release (#11). (af70b357)
- FEAT: Add discriminated union schema support with pattern matching (#6). (9c9aff3c)
- DOCS: Fix API inconsistencies across all documentation (#12). (2c57298b)
-
1.0.0-beta.106 Oct 2025 pre-release -
0.3.0-beta.119 Jun 2025 pre-releaseRelease notes
Open source →- REFACTOR: Improved json-schema support (#9). (d4da5d94)
- REFACTOR: consolidate constraint system and enhance validation pipeline (#8). (e6161a39)
- FEAT: Add dart_mappable integration for seamless field name synchronization (#10). (66adc71c)
- FEAT: Add discriminated union schema support with pattern matching (#6). (9c9aff3c)
2025-06-19
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
ack_example-v0.3.0-beta.2
-
0.2.0-beta.104 May 2025 pre-releaseRelease notes
Open source →- Bump "ack" to
0.2.0-beta.1.
2025-05-02
Changes
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- Bump "ack" to
-
0.1.210 Mar 2025Nothing published for this version
-
0.1.110 Mar 2025Nothing published for this version
-
0.1.010 Mar 2025Nothing published for this version
-
0.0.226 Feb 2025Nothing published for this version
-
0.0.126 Feb 2025Nothing published for this version
-
0.0.1-dev.724 Feb 2025 pre-releaseNothing published for this version
-
0.0.1-dev.624 Feb 2025 pre-releaseNothing published for this version
-
0.0.1-dev.524 Feb 2025 pre-releaseNothing published for this version
-
0.0.1-dev.424 Feb 2025 pre-releaseNothing published for this version
-
0.0.1-dev.324 Feb 2025 pre-releaseNothing published for this version
-
0.0.1-dev.224 Feb 2025 pre-releaseNothing published for this version
-
0.0.1-dev.124 Feb 2025 pre-releaseNothing published for this version