An empty screen isn't a failure state — it means the user hasn't acted yet, and it's the most natural place to suggest what to do next. "No data" just wastes that opening.
Good empty-state copy explains why it's empty (first-time user vs. a filter with no matches) and pairs that with an action the user can take immediately. Those two causes are different, so the copy for each should be too.
The demo's ✕ merely reports a fact; ✓ turns the same space into the first step.
When to use
Write separate copy for a brand-new list, a zero-result search, and a zero-result filter — the cause differs, so the message should too.