Public Pages
Public Pages

๐Ÿง‘โ€๐Ÿ’ป Technical Specifications โ€“ Issue Delivery Report

Report

โš™๏ธ Core Technologies

Issue Delivery Report is built with:

  • Atlassian Forge (Cloud Runtime)

  • React using @forge/react (UI Kit 2)

  • Jira REST API v3 for issue data and changelogs

  • Forge view.getContext() to access issue context and license state

  • Blob-based export via browser APIs (for CSV, JSON, Markdown, TXT)

  • PieChart + DynamicTable from Forge UI Kit


๐Ÿงฌ Architecture Overview

A lightweight client-side app rendered directly inside the Jira issue view, which:

  • Reads issue changelog and fields in real-time

  • Categorizes status durations by keywords

  • Calculates Flow Efficiency and Sprint Addition flags

  • Shows visual feedback and enables 1-click exports


๐Ÿ” How It Works (Step by Step)

  1. App loads in the Jira issue view panel
    โ†ณ Via @forge/react using ForgeReconciler.render()

  2. Reads the current issue key
    โ†ณ Obtained through view.getContext()

  3. Fetches issue details and full changelog
    โ†ณ Calls /rest/api/3/issue/{key}?expand=changelog

  4. Parses status transitions
    โ†ณ Iterates over the changelog to detect status changes and sprint additions

  5. Builds a timeline
    โ†ณ Calculates start/end times for each status and classifies them using keyword matching

  6. Computes key metrics
    โ†ณ Total Time, Active / Waiting / Blocked Time, Flow Efficiency, Sprint Addition

  7. Renders metrics, insights, and chart
    โ†ณ Displays in DynamicTable, PieChart, and Lozenge components

  8. Offers export options
    โ†ณ Allows download of report in 4 formats (CSV, JSON, Markdown, TXT)

    Frame 124.png

๐Ÿ“ก APIs Used

API Endpoint

Purpose

/rest/api/3/issue/{key}?expand=changelog

Fetch issue details and full status transition history

view.getContext()

Access issue key, sprint metadata, and license state

requestJira()

Perform REST API calls from Forge frontend

๐Ÿšซ No data is written to Jira โ€” the app is read-only, except during export.


๐Ÿ’พ Data Storage

Issue Delivery Report does not use issue.properties to persist state.
All computations are ephemeral and run in-memory for the current session.

Nothing is stored in Jira unless the user manually exports data to file.


๐Ÿš€ Performance

  • Loads changelog once per session

  • Timeline calculations use native Date arithmetic

  • DynamicTable + PieChart are rendered conditionally to avoid overhead

  • Export logic is lazy-loaded upon button click

  • Lightweight and fast, even with 50+ status transitions


๐Ÿ›ก Security

  • Fully sandboxed inside the Atlassian Forge runtime

  • App runs in the issue view only โ€” never across issues or projects

  • Uses OAuth2-scoped requestJira() with user context

  • No persistent storage or external API usage

  • Complies with Atlassian Marketplace data handling standards


๐Ÿงช Test Coverage

The core logic has been verified via:

  • โœ… Status parsing and keyword matching

  • โœ… Time duration and efficiency calculations (including edge cases)

  • โœ… Sprint addition logic and date comparisons

  • โœ… Export content (header correctness, file structure, encoding)

UI rendering is stable in both light and dark themes via Forge dev preview.