Enabling Jira Issue Panels by default: A guide for Jira Administrators

Introduction

The Jira issue panel Forge module is a popular way to extend the standard Jira Issue View. It allows app vendors to integrate custom workflows, checklists, or third-party tools directly into Jira issues. However, there’s a common frustration:
issue panels are hidden by default, and users have to manually click the “Apps” button to access them.

This can cause confusion, reduce the visibility of app features, and slow down workflows.
In this article, we’ll break down the problem, explore its impact, and share a practical workaround Jira Administrators (and app vendors) can use today.

The Problem: Hidden Issue Panels

By default, Forge issue panels remain hidden until a user clicks the Apps button and selects the panel manually. This results in three major issues:

  1. Poor Discoverability – Users may not realize the panel exists, especially if they’re new to the app or the Jira instance.
  2. Workflow Friction – If a team relies on the panel content (like checklists or integrations), they must open it every time for each issue - breaking focus and slowing things down.
  3. Inconsistent Behavior – Panel visibility is set per issue, not per user. That means if any user with Edit permissions opens the panel, it becomes visible for everyone else viewing that issue. This can lead to unexpected behavior and confusion.


Current Workarounds

While Atlassian is working on an official solution (https://ecosystem.atlassian.net/browse/FRGE-734), there are a couple of interim workarounds you can consider:

1. User Education (and Manual Setup)

You can start by educating your team on how to use the Apps button and how to pin panels for easier access. Sharing internal documentation or short videos can go a long way.

This also helps your team become more self-sufficient - once users understand the UI better, they’ll ask fewer simple questions (though they’ll probably start asking for more customization options, more apps, more integrations - but that’s a topic for another day! :grinning_face_with_smiling_eyes:).

2. Set Panel Visibility Programmatically

Now for the fun part: a little hack that mimics how Jira stores panel visibility settings.

When a user opens an issue panel, Jira sends a PUT request to the following endpoint:

https://{your-domain}.atlassian.net/rest/api/2/issue/{issueKey}/properties/{propertyKey}

With a request body like:

{
    "added": 1745244229725,
    "id": "2c147b71",
    "collapsed": false
}

The propertyKey follows this structure:

ari:cloud:ecosystem::extension/{appId}/{environmentId}/static/{moduleKey}

So, to make an issue panel visible by default for all users, you just need to replicate that request for the relevant issues.

Here’s a quick script Jira Admins (or any user with Edit permissions) can use:

:warning: You’ll need to:

  • Replace the JQL query with the correct one for your use case.
  • Adjust the propertyKey according to your app/module.
  • Note: If you run the script in your browser’s console, no authentication is needed - the script will execute with the permissions of the currently logged-in user.
// Start of configuration
const JQL = 'project = KAN';
const PROPERTY = 'ari:cloud:ecosystem::extension/17e54327-5a86-4934-b641-c38975a89423/4836c748-9a72-447d-aa9a-a45d3d52cf13/static/forge-starter-jira-issue-panel';
// End of configuration

// Script
const propertyWithEscapedSlashes = PROPERTY.replace(/\//g, '%2F');
const response = await fetch(`/rest/api/3/search?jql=${JQL}&startAt=0&maxResults=1000&fields=key`, {
  headers: { 'Accept': 'application/json' }
});
const issuesResponse = await response.json();

for (const issue of issuesResponse.issues) {
  console.log(`Attempting to enable issue panel for ${issue.key}...`);
  await fetch(`/rest/api/2/issue/${issue.key}/properties/${propertyWithEscapedSlashes}`, {
    headers: {
      "accept": "application/json,text/javascript,*/*",
      "content-type": "application/json",
    },
    body: `[{\"added\":${new Date().getTime()},\"id\":\"${Math.random().toString(16).substring(2, 10)}\",\"collapsed\":false}]`,
    method: "PUT",
  });
  console.log(`Successfully enabled issue panel for ${issue.key}`);
}

console.log('DONE („• ֊ •„)');

You can run this script in your browser’s developer console, or adapt it to Node.js if needed. Here’s what it looks like in action:

The script will loop through all matching issues (1000 max) and mark the panel as visible for each one.

It’s not a perfect solution - but while we wait for the official fix from Atlassian, it’s a helpful workaround for many teams.

This visibility issue can be frustrating, but with a little digging and a bit of scripting, you can make life easier for your users. If you’ve found other creative solutions or have ideas to share - drop them in the comments. Let’s help each other out!

Forge Starter repository: https://github.com/andrei-pisklenov/forge-starter

If you’re looking for the easiest way to start developing a Forge app, check out my Forge Starter repository:

GitHub - andrei-pisklenov/forge-starter: ForgeStarter is a modern, feature-packed template for building Atlassian Forge apps for Jira, Confluence, and Bitbucket. It includes Yarn, Vite, React, TypeScript, and more, following the "Grab It All – Use Only What You Need" approach for flexible development

It’s preconfigured for Jira and Confluence Forge app development, using Vite, TypeScript, and React. Plus, it includes a bunch of handy code snippets to help you get up and running quickly.

8 Likes