
See exactly what changed in an issue's Description. The app shows which words were added, which were removed, who made the change and when. Pick any two versions from the change history and compare them word by word or line by line. Summary, Environment and custom text fields (for example "Acceptance Criteria") work the same way.
Built on Atlassian Forge with UI Kit. It reads the issue's change history as the signed-in user and has no external servers, no egress and no app storage.
Open any issue in the new Jira issue view. In the Activity section, next to Comments, History and Work log, choose the Description diff tab.
The counts read like "+12 words added, −3 words removed" for the selected pair. In Lines mode they count lines.
If Summary, Environment or a single-line or multi-line text custom field has been edited, a Field picker appears. Each field shows its number of recorded changes. The app checks at most 240 fields per view for text, Description included. When more fields than that have changed, a notice says so.
Jira records each edit of a text field in the issue's change history, with the text before and after. The app reads that history (GET /rest/api/3/issue/{id}/changelog) and rebuilds every version as follows.
The diff runs inside the app's Forge function. Lines are matched first (Myers' algorithm), then the words inside each changed block are compared. Chinese and Japanese text is compared character by character. When an unchanged word sits between two changes and isn't longer than them, it's shown as part of one replacement. So a rewritten sentence reads as "old sentence → new sentence" instead of fragments.
The word counts come from the exact word diff, with two exceptions. Each one comes with a notice.
The app shows the text exactly as Jira stores it in the change history. Formatting such as bold text, headings, lists or links can appear as markup characters. The tab says so under the diff.
| Scope | read:jira-work only, to read the issue's change history and the names and types of its fields |
|---|---|
| Runs as | The signed-in user (asUser). You only see history for issues and fields that Jira lets you see. |
| Writes to Jira | Never. The app has no write scope. |
| Stores data | No. There is no app storage and no cache. Each view is read from Jira when you open it. |
| External calls | None. No egress, no remote back end. |
The first time you open the tab, Forge asks you to allow the app to read Jira data as you. It's Forge's standard consent screen.
See PRIVACY.md for details.
| Limit | Value | What happens |
|---|---|---|
| Change history read per view | 30 pages (3,000 change entries at Jira's usual 100 per page; fewer if the site returns smaller pages) | For longer histories, the first page (the oldest entries, including the original text) and the newest pages are read. A notice says how many entries were read and that versions in between may be missing. The same notice appears whenever fewer entries come back than Jira reports in total. |
| Time spent reading history | about 18 seconds | Pages that are not read in time are reported the same way. |
| Text compared per version | 100,000 characters | Longer text is cut before comparing, with a notice. Jira text fields hold up to 32,767 characters. |
| Detailed comparison | up to 3,000 line edits; inside one changed block, up to 1,500 word edits and 20,000 tokens per side (words, spaces and punctuation each count, so about 10,000 words) | Past these limits the passage is compared line by line (see How it works), with a notice. The app keeps that only if at least a third of the passage's old words stay unchanged (in Lines mode, a third of its old lines). Otherwise that part is shown as removed text followed by added text, with a notice, and the counts cover that whole part. |
| Lines shown | 2,000 | The rest is cut, with a notice. |
| Versions in the pickers | 200 (the original plus the 199 newest, plus the selected pair) | Versions in between are not listed in the pickers, but Older change and Newer change step through every version. |
| Fields in the field picker | 40 | Description first, then other text fields by name. |
| Fields checked for text | 240 per view, Description included (4 requests of 60 field ids) | Description and the other built-in text fields first, then custom fields with the most changes. When more fields have changed, a notice says a rarely changed text field may be missing from the Field picker. |
Report problems through the Marketplace listing's support link. Please include the issue type and, if you can, the number of changes in the issue's History tab. Do not send issue text unless you are allowed to share it.
Zovo builds and maintains this app. If it saves you time, you can support the work on GitHub Sponsors. Sponsorship is optional, and the tool works the same without it.
Zovo is made by theluckystrike on GitHub.
MIT. Copyright (c) 2026 Zovo.
If this app saves you time, you can support the work on GitHub Sponsors. Monthly tiers start at $5, and one-time tiers start at $15. Sponsorship is optional, and the tool works the same without it.