Package and ship

Set application metadata

Give the package a stable name, version, description, author, and identifier before producing distributable files.

8 minute lesson

~~~

Application identity reaches the operating system, update service, signing system, and data directory. Set it before the first public build.

Open package.json and replace the generated placeholders.

Use a package-safe name, a human-readable productName, a semantic version, and accurate author and description fields.

Set a stable application identifier in forge.config.js through the packager configuration:

module.exports = {
  packagerConfig: {
    name: 'Desktop Notes',
    appBundleId: 'com.flaviocopes.desktopnotes'
  },
  makers: [
    // generated makers stay here
  ]
}

Choose the identifier once. Signing, updates, operating-system permissions, and user data can depend on application identity.

Use one identity map:

FieldPurpose
namePackage-safe internal name
productNameHuman-readable application name
versionRelease version
appBundleIdStable macOS application identifier
Windows application identityInstaller and upgrade continuity

The exact Windows identifier depends on the maker. Configure it in that maker instead of assuming appBundleId covers every platform.

Build once, then inspect the packaged application name, executable, metadata, user-data location, and installer identity. They should all describe Desktop Notes consistently.

Increment the version for every release. Never replace an old artifact with different code under the same version; update clients and support logs need an immutable version-to-code mapping.

Lesson completed

Take this course offline

Get every free book and course as PDF and EPUB files.

Get the download library →