Candid interface compatibility check doesn't show all breaking interface changes before deploy

I recently deleted 4 APIs from one of my canisters, and changed the return type of another API (5 breaking API changes total).

Upon deploying the canister, I expected to receive several notices about breaking frontend clients, but only received a single prompt before the canister install (upgrade) commenced.

Installing canisters...
WARNING!
Candid interface compatibility check failed for canister <my_canister>.
You are making a BREAKING change. Other canisters or frontend clients relying on your canister may stop working.

Method <method_name> is only in the expected type
Do you want to proceed? yes/No
yes
Upgrading code for canister <my_canister>, with canister ID <canister_id>
Deployed canisters.
URLs:
  Backend canister via Candid interface:
  ...

I would have expected to see 5 developer yes/no prompts in total about breaking interfaces before the deploy happened, detailing each interface that changes instead of just that for one of the APIs that was removed.

Are there any dfx flags that I can enable to make sure all breaking changes prompt me before the wasm is actually deployed?

No, dfx does not have any options for that. @chenyan, do you think it would be hard to add? I can see how that would be useful

1 Like

Thanks for the report. I add an issue for this: subtype check should return all breaking changes · Issue #551 · dfinity/candid · GitHub

1 Like