Skip to content

DynamoDB conformance

Dynoxide is tested against Parity Suite, the DynamoDB conformance suite - hundreds of behavioural tests run against real DynamoDB on AWS to fix the expected answer, then run against every emulator the same way.

Parity Suite is maintained by the same person who maintains Dynoxide. Every engine, Dynoxide included, runs the same automated tests against live AWS DynamoDB, and the results and test code are public. The suite is a TypeScript project covering real DynamoDB, DynamoDB Local, LocalStack, dynalite, ministack, floci, ExtendDB, and Dynoxide, with every test 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 on the Parity Suite conformance board.

Target Tier 1 Tier 2 Tier 3 Total
DynamoDB 100% 100% 100% 100%
dynoxide wasm 100.0% 100.0% 100.0% 100.0%
Dynoxide 99.8% 77.8% 96.9% 94.7%
LocalStack 93.5% 81.2% 72.5% 84.2%
ExtendDB 85.5% 86.2% 78.8% 83.2%
DynamoDB Local 92.2% 78.5% 72.2% 83.0%
Ministack 89.1% 70.4% 78.7% 82.0%
Floci 91.4% 61.6% 70.7% 78.9%
Dynalite 91.4% 13.2% 71.6% 76.2%

Numbers come from 998 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 on the Parity Suite conformance board. The suite itself - every test - is in the paritysuite/dynamodb-conformance repository.

A conformance score says nothing about scope - what Dynoxide implements and what it leaves out. That's on the compatibility page, along with the handful of places it knowingly behaves differently.

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.