#[\NoDiscard] is not the biggest PHP 8.5 feature, but it is one I expect to age well. A lot of production bugs come from a function returning something important and the caller quietly ignoring it. Sometimes that is harmless. Sometimes it means a lock was not acquired, a validation result was dropped, or an immutable object update never actually got used.
The PHP manual now documents the NoDiscard attribute, and the RFC describes it as a way to mark return values as important. PHP 8.5 can warn when the return value is discarded, which brings a useful static-analysis idea closer to the language itself.
I would use this sparingly. If every non-void function gets marked, the signal gets noisy and developers learn to ignore it. It makes more sense on methods where dropping the result is almost always wrong: immutable with*() methods, validation helpers, lock attempts, transaction-style APIs, parsing results, or functions that return a changed copy rather than modifying in place.
This is the kind of feature that improves code review more than code writing. It turns “remember to use the returned value” from tribal knowledge into something the code can say for itself. That is a good trade: a little extra metadata in the API, fewer silent mistakes later.