> For the complete documentation index, see [llms.txt](https://documentation.dnanexus.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.dnanexus.com/developer/apps/third-party-and-community-apps/third-party-app-publishing-checklist.md).

# Third Party App Publishing Checklist

The app publishing checklist covers items to review before you publish an app to customers. As with any guidance, if you have a reason to diverge, it is recommended you follow your intuition and do so.

## App Checklist

[Transition from Applets to Apps](/developer/apps/transitioning-from-applets-to-apps.md)

### `dxapp.json` and Source Code

* [ ] Conform to [Third Party App Style Guide](/developer/apps/third-party-and-community-apps/third-party-app-style-guide.md) and [Community App Guidelines](/developer/apps/third-party-and-community-apps/community-app-guidelines.md)
* [ ] In the `details` field, specify `whatsNew` and `citations`.
* [ ] In the `details` field, specify an `upstreamProjects` key whose value is an array of hashes, each of which describes the [licenses](/developer/apps/third-party-and-community-apps/third-party-app-style-guide.md#licenses) associated with software or packages included in this app. This is required to ensure compliance with open-source licenses. For each entry, specify the software's `name`, `repoUrl`, `version`, `license`, `licenseUrl`, and optionally `author`.
* [ ] Verify `regionalOptions` contains regions for ALL supported app regions.
* [ ] Set applicable timeout and restart policy in [`runSpec`](/developer/apps/app-metadata.md#runspec-entry-point-and-dependencies).
* [ ] In the `version` field, set proper [semantic versioning](https://semver.org/).
* [ ] Contemplate setting `"openSource": true`. Default is `False`, set at your discretion.
* [ ] Add unit tests for your app.

### Documentation

* [ ] Write `Readme.md` and (optional) `Readme.developer.md`.
* [ ] Read documentation to double check after building the unpublished app in the [Before Publishing the App](#before-publishing-the-app) section. (Unpublished app URL is available to developers as `https://platform.dnanexus.com/app/app-xxxx`.)

### Before Publishing the App

* [ ] Build as an app on the DNAnexus Platform billed to `org-your_handler` (**DO NOT PUBLISH YET**). Remember unpublished apps can be viewed by developers on the platform under `https://platform.dnanexus.com/app/app-xxxx`.
* [ ] Test it on expected data.
* [ ] Verify [entity-ids](/developer/api/entity-ids.md) are specified for all supported cloud regions in the app.
* [ ] Add Developers via the [`dx add developers`](/user/helpstrings-of-sdk-command-line-utilities.md#add-developers) CLI command
* [ ] Add `org-dnanexus_tools_admin` as a Developer so DNAnexus can help add `authorizedUsers PUBLIC` when needed.
* [ ] Add authorized users via the [`dx add users`](/user/helpstrings-of-sdk-command-line-utilities.md#add-users) CLI command
* [ ] Contact [DNAnexus Support](mailto:support@dnanexus.com) so the DNAnexus tools admin team is notified and can work with you to make the app PUBLIC.
* [ ] Publish via the [`dx publish`](/user/helpstrings-of-sdk-command-line-utilities.md#publish) CLI command
* [ ] Verify the versions that appear on the platform are the intended versions

You have published an app. Feel free to publicize your app and let your users know your tool is available in the cloud.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://documentation.dnanexus.com/developer/apps/third-party-and-community-apps/third-party-app-publishing-checklist.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
