The jira:projectPage
module adds the app in the horizontal tab navigation in Jira.
For Jira Service Management, you can access the app within the Jira Service Management project in the left navigation.
The page URL is constructed in the form of: /jira/{projectType}/projects/{projectKey}/apps/{appId}/{envId}
This module can be used in Jira and Jira Service Management.
When adding this to your app, use it as a top-level component.
By default, the jira:projectPage
module registers a top-level page.
However, you can create multiple subpages using either a pages
or sections
field to organize your app's functionality.
Use pages
to add individual pages to the app and sections
to group related pages together.
This configuration only changes the project page URL structure. You must handle routes inside your Custom UI app using view.createHistory() for proper navigation.
This subpage feature works only with Custom UI applications.
1 2modules: jira:projectPage: - key: hello-world-project-page resource: main resolver: function: resolver render: native title: Hello World!
Property | Type | Required | Description |
---|---|---|---|
key |
| Yes |
A key for the module, which other modules can refer to. Must be unique within the manifest. Regex: |
resource | string | If using Custom UI or modern versions of UI Kit | The key of a static resources entry that your module will display. See resources for more details. |
render | 'native' | If using modern versions of UI Kit | Indicates the module uses UI Kit. |
resolver | { function: string } or{ endpoint: string } |
Set the Set the | |
title | string or i18n object | Yes |
The title of the project page, which is displayed at the top of the page. The title also appears in the horizontal tab navigation in Jira. The |
icon | string |
The icon displayed next to the For Custom UI and UI Kit apps, the If no icon is provided, or if there's an issue preventing the icon from loading, a generic app icon will be displayed. | |
layout |
UI Kit:
native )
| The layout of the project page that defines whether a page is rendered with default controls (native), lays out the entire viewport with a margin on the left and breadcrumbs (basic for UI Kit), or is left blank allowing for full customization (blank for Custom UI). | |
pages | Page[] | You can only specify `pages` or `sections` but not both. | The list of subpages to render in the app. |
sections | Section[] | The list of sections to render in the app. | |
displayConditions | object | The object that defines whether or not a module is displayed in the UI of the app. See display conditions. |
Key | Type | Required | Description |
---|---|---|---|
i18n | string | Yes | A key referencing a translated string in the translation files. For more details, see Translations. |
1 2modules: <module-name>: - key: hello-world-jira-module-page-example resource: main resolver: function: resolver render: native title: Hello World pages: - title: page example route: page-example-1 icon: https://example.com/icon.png
Property | Type | Required | Description |
---|---|---|---|
title | string or i18n object | Yes |
The title of the subpage, which is displayed on the sidebar. The |
icon | string | The URL of the icon that's displayed next to the subpage title. A generic app icon is displayed if no icon is provided. | |
route | string | Yes | The unique identifier of the subpage. This identifier is appended to the project page URL. |
1 2modules: <module-name>: - key: hello-world-jira-module-section-example resource: main resolver: function: resolver render: native title: Hello World sections: - header: example section pages: - title: page example route: page-example-1 icon: https://example.com/icon.png
Property | Type | Required | Description |
---|---|---|---|
header | string or i18n object |
The section header. The | |
pages | Page[] | Yes | The list of subpages to render within the app. |
Your Jira project page can access contextual project information through extension data. Use the useProductContext hook to access the extension context in UI Kit applications or the getContext bridge method in Custom UI applications.
Property | Type | Description |
---|---|---|
type | string | The type of the module. |
project.id | string | The id of the project where the module is rendered. |
project.key | string | The key of the project where the module is rendered. |
project.type | string | The type of the project where the module is rendered. |
board.id | string | The id of the board where the module is rendered. Only for Jira Software |
board.type | "simple" | "scrum" | "kanban" | The type of the board where the module is rendered. Only for Jira Software |
location | string | The full URL of the host page where this module is displayed. |
Add the jira:projectPage
module to your Forge app's manifest:
1 2modules: jira:projectPage: - key: hello-world-project-page resource: main resolver: function: resolver render: native title: Hello World!
Using UI Kit with render: native
ensures your page has the proper Jira look and feel. UI Kit offers a wide range of pre-built and customizable components that align with Atlassian's design standards.
pages
OR sections
, not both in the same moduleYes, you can specify a custom icon using the icon
property. Provide a URL to your icon image. If no icon is specified, a generic app icon will be displayed.
The layout
property supports:
native
(default) or basic
native
(default), blank
, or basic
(deprecated)
The layout of the project page defines whether a page is rendered with default controls (native), lays out the entire viewport with a margin on the left and breadcrumbs (basic for UI Kit), or is left blank allowing for full customization (blank for Custom UI).native
: Includes all default Jira project page controls and navigation elementsbasic
: Provides a simplified layout with left margin, breadcrumbs, and minimal controlsnative
: Includes standard Jira project page chrome and navigationblank
: Provides a completely empty canvas for full viewport customizationbasic
: (Deprecated) Similar to UI Kit's basic layout with left margin and breadcrumbsFor subpages to work properly, you need to:
pages
or sections
in your manifestview.createHistory()
1 2import { view } from "@forge/bridge"; const history = await view.createHistory(); // e.g. URL begins as http://example.atlassian.net/example/apps/abc/123 history.push("/page-1"); // this updates the URL to http://example.atlassian.net/example/apps/abc/123/page-1 history.push("/page-2"); // this updates the URL to http://example.atlassian.net/example/apps/abc/123/page-2 history.go(-2); // this updates the URL to http://example.atlassian.net/example/apps/abc/123
route
property becomes part of the URL pathYes, use the displayConditions property to control when your module is visible. This allows you to show the page only in specific project types or under certain conditions.
Yes, the jira:projectPage
module works in both Jira Software and Jira Service Management. In JSM, the page appears in the left navigation panel.
Rate this page: