Update, 1 Nov: Jim M points out below that Jira now has a "Require approvals before moving to Released" option, which blocks the release until approvers approve. He sees it on Jira Standard in the Create release dialog but not in Edit release, and thinks it is a staged rollout rather than a plan limit. It wasn't on my Jira Free test site, so check what your own site shows. Thanks Jim!
Short answer: not natively on my Jira Free test site, and as far as I can tell not with an app either. I'll say why, and what you can do today.
The request is JRACLOUD-92893, "Add a approvals feature for when releasing versions". It was opened in October 2017. It has 185 votes and the status is In Progress, which it has been for years. The comments read like a list of people who need this for an audit. In 2019 one of them wrote that they have HITRUST requirements to have a documented approval in place for any product release. In January 2024 another described their stop-gap: a standard work item called "Release Approval", created by Automation every time a version is created, to get the workflow and auditing they need. Their own verdict was "Still holes in the stop-gap but it's better than what is currently present."
Native approvals do not fill the gap either. Atlassian's documentation says the approvals feature is only available on Premium editions in Jira, and it is added as a step on a status in a company-managed project's workflow. A version is not a status of a work item.
I also checked whether an app could block the Release button. Forge, the platform our apps run on, has a workflow validator, and it works on work item transitions. Events for versions exist, including one when a version is released, but they fire after the release has happened. I found no hook that runs before it and can say no. I read the Forge events reference and the validator page. I haven't tried every corner of the platform, so tell me if I missed a module.
So the options today.
The Automation stop-gap from that comment. A release work item per version, with its own workflow. It is cheap, and you will see the holes within a release or two: nothing connects the work item to the Release button, and nobody records who signed in a form an auditor can check.
The same idea with a real sign-off on that work item. This is what I do with Approval Flow, which I make, so I am biased. A work item such as "Release 1.4 go or no-go" sits in fix version 1.4. It carries three required sign-offs, each with named approvers, and a validator on its transition refuses to move until all three are in. Every decision goes into a hash-chained audit trail you can export, and the work item has a certificate you can download. On my test site a policy called "Release sign-off" does exactly this on a DEMO project: the transition stays blocked until the third person signs.
What it does not do is stop someone clicking Release on the version page. The sign-off is on the work item, not on the version. If your release manager ignores the work item, nothing stops the release. I want to be plain about that, because "release sign-off" sounds like more than it is.
I have thought about a softer version: a sign-off record per version and a warning when a version is released without one. I have not built it. It would warn and record, never block. Turning a release back to unreleased needs a permission I do not hold, and it is a rude thing for an app to do to someone. I would build the warning only if a few teams said they would use it.
If you release in a regulated setting, how do you prove today who approved version N, and where does that record live?