Conformance

Dynoxide is tested against the DynamoDB Conformance Suite - a few hundred behavioural tests run against real DynamoDB on AWS to fix the expected answer, then run against every emulator the same way. Dynoxide comes out top of the lot.

This isn't a self-test. The suite is an independent TypeScript project that runs the same tests against any DynamoDB-compatible endpoint: real DynamoDB, DynamoDB Local, LocalStack, dynalite, ministack, floci, ExtendDB, and Dynoxide. Every test is validated against AWS first to establish ground truth.

Results

The latest run, pulled straight from the suite. DynamoDB is the ground truth at 100% by definition - it's the thing everything else is measured against. The live results for every target, tracked over time, are at paritysuite.org.

Target Tier 1 Tier 2 Tier 3 Total
DynamoDB 100% 100% 100% 100%
Dynoxide 100.0% 100.0% 100.0% 100.0%
ExtendDB 93.2% 93.3% 94.9% 93.8%
Floci 93.5% 87.8% 93.9% 92.6%
LocalStack 98.6% 92.7% 68.7% 88.3%
DynamoDB Local 97.2% 89.1% 69.2% 87.0%
Ministack 95.8% 87.9% 72.0% 87.0%
Dynalite 95.5% 16.9% 82.7% 83.1%

Numbers come from 699 tests across three tiers, scored on the latest published run. They update on their own as the suite grows and emulators change - nothing here is typed by hand.

What the tiers cover

The suite is organised into three tiers of increasing strictness:

Tier 1 - Core. CRUD operations, Query, Scan, batch operations, table management, GSI and LSI support. The things every emulator needs to get right.

Tier 2 - Complete. Transactions, PartiQL, TTL, DynamoDB Streams, resource tags, GSI lifecycle, backups, the control-plane operations. Features that matter for real applications but that some emulators skip.

Tier 3 - Strict. Exact error message formatting, validation ordering, number precision, empty value handling, legacy API compatibility. The edge cases that only surface when you run a real workload against the emulator.

What the suite tests, and what it doesn't

A conformance score is a useful signal, not a certificate. A few things worth keeping in mind:

  • It only tests what it tests. A behaviour with no test is a blind spot, not a pass. "100% Tier 1" would mean 100% of the Tier 1 tests that exist, not every Core behaviour DynamoDB has. Coverage is good and growing, but it isn't everything.
  • It measures correctness, not scope. The score is correctness over the operations a target actually implements - passes over passes plus fails. A skipped test is an operation the target doesn't implement, which is honest scope, not a wrong answer, so it doesn't count against the score. A fail is a real divergence from DynamoDB and does. The two mean opposite things and the suite keeps them apart.
  • It's behaviour only. The suite says nothing about performance, durability, cost, or whether an emulator is the right tool for your job. It checks what your app would see through the AWS SDK, and nothing else.
  • Every result is a point in time. A score is tied to the version tested on that date, against DynamoDB's behaviour on that date. Both move.

The full methodology and the live results for every target are at paritysuite.org. The suite itself - every test - is at nubo-db/dynamodb-conformance.

Why it matters

Most emulators get the happy path right. The gaps show up in error handling, edge cases, and strict validation ordering. If your tests pass locally but fail against real DynamoDB, the emulator's conformance is the likely culprit.

Dynoxide has been built with the conformance suite running alongside it since day one. The suite has surfaced dozens of correctness issues over its development, and as it grows it keeps finding more - which is exactly the point. The table above is the live picture, not a marketing number.

Amazon DynamoDB, DynamoDB, and AWS are trademarks of Amazon.com, Inc. or its affiliates. Dynoxide is an independent project and is not affiliated with, endorsed by, or sponsored by Amazon. DynamoDB Local, LocalStack, dynalite, ministack, floci, and ExtendDB are the trademarks or property of their respective owners.