Skip to main content
Modding Guide
PalMods.gg
Guides/Modding/Package, Test & Publish a Mod
Creator releasePalworld 1.0Advanced

Package, Test & Publish a Mod

Turn finished files into a 1.0 package: author Info.json, declare dependencies and server rules, test the installed result, version updates, and publish responsibly.

20 min read Researched for 1.0 Sources included

A Palworld 1.0 release is more than a zip of files. The official loader recognizes a package by the single Info.json at its root, then uses PackageName, Version, Dependencies, MinRevision, Tags, and one or more InstallRules to decide whether and where it can deploy. Good packaging turns installation and server operation into deterministic metadata instead of prose that every user interprets differently.

Design that manifest alongside the mod. Choose a stable identity, keep runtime targets in dedicated source folders, declare the complete dependency graph, and test the package after the official uploader creates or validates it. The artifact you publish—not your development tree—is the product.

02Release root

Canonical package layout

EntryPurposeRule
Info.jsonMachine-readable package identity and deployment rulesExactly one at package root; valid JSON
thumbnail.pngIn-game and Workshop package art when named by ThumbnailShip the referenced file with suitable readable artwork
Scripts/Lua runtime contentTarget from a Lua InstallRule
Paks/Resource pak/ucas/utoc setsTarget from a Paks InstallRule
LogicMods/Cooked LogicMod package filesTarget from a LogicMods InstallRule
PalSchema/PalSchema JSON/JSONC mod contentTarget from a PalSchema InstallRule
03Info.json

A complete client Lua manifest

Replace dependency identities and revision with values verified for your release. PackageName must contain only ASCII letters and digits in the official uploader.

Info.jsonjson
{
  "ModName": "Example Runtime Utility",
  "PackageName": "ExampleRuntimeUtility",
  "Thumbnail": "thumbnail.png",
  "Version": "1.0.0",
  "DebugMode": false,
  "MinRevision": 82182,
  "Author": "YourName",
  "Dependencies": ["UE4SS"],
  "Tags": ["Utilities", "UE4SS"],
  "InstallRule": [
    {
      "Type": "Lua",
      "Targets": ["./Scripts"]
    }
  ]
}
04Manifest reference

Every Info.json field has a job

FieldUseAuthor decision
ModNameHuman-readable display nameClear and recognizable; it may contain spaces.
PackageNameActivation, dependency, deployment-folder identityStable, distinctive, alphanumeric only; changing it creates a new identity.
ThumbnailImage shown in game and SteamReference an included package-relative image.
VersionPlain-string redeployment comparisonChange on every update; semantic versioning is optional but helpful to humans.
DebugModeForces reinstall every launch when trueUse for local iteration, ship false unless perpetual redeployment is intentional.
MinRevisionMinimum Palworld revision; last five title-screen digitsSet from the oldest build you actually tested.
AuthorAttribution metadataUse the publishing identity users can verify.
DependenciesRequired PackageName identitiesDeclare every runtime/framework package, not display titles.
TagsOfficial Workshop classificationUse supported tags: PalSchema, UE4SS, Model Replacement, Utilities, Gameplay, User Interface.
InstallRuleType, Targets, and optional server applicationOne or more precise rules matching real package folders.
06Dedicated server

Add an explicit server rule

The server rule is separate even when it deploys the same source. This makes client and server intent machine-readable.

Info.json (InstallRule excerpt)json
{
  "InstallRule": [
    { "Type": "Lua", "Targets": ["./Scripts"] },
    { "Type": "Lua", "IsServer": true, "Targets": ["./Scripts"] }
  ]
}
07Official workflow

Create and validate with Mod Uploader

  1. 01

    Run Steam under the owning account

    Start Steam, sign in with an account that owns Palworld, then launch Palworld Mod Uploader and confirm the Workshop content directory for app 1623730.

  2. 02

    Create the intended package type

    Use Create New Mod and select Lua, Paks, LogicMods, or PalSchema. Hold Shift while creating only when you intentionally want a local package with no Workshop item.

  3. 03

    Replace the generated template content

    Keep Info.json at root and place only final runtime files in the generated type folder. Do not add your repository, build cache, logs, or secrets.

  4. 04

    Save and inspect Info.json

    Set a stable PackageName, real Version, minimum tested revision, dependencies, tags, and install types. Manually add server rules when needed.

  5. 05

    Launch and test the installed package

    Enable it under Options → Mod Management, save/restart, and verify deployment plus behavior. Test the package folder the uploader manages—not a separate manual copy.

  6. 06

    Upload with useful change notes

    The uploader validates readable JSON, alphanumeric PackageName, and nonempty InstallRules/Targets. Change Version before updates, write migration/removal notes, then set Workshop visibility and description.

08PalMods publishing

What Info.json can safely prefill

A publishing wizard should treat the official manifest as suggestions, preserve explicit author choices, and show conflicts instead of silently guessing.

Manifest signalSafe PalMods useDo not infer
ModNameSuggest title when emptyLong description, summary, permissions
VersionPrefill release/file versionSemantic ordering beyond the author’s string
InstallRule.TypeSuggest loader type(s) and validate archive layoutOne loader when several rules are present
IsServer: trueSuggest dedicated-server compatibilityServer-only side; the package may also contain client rules
TagsSuggest recognized taxonomy tags for confirmationClaims not represented by official tags
PackageName / Dependencies / MinRevisionPersist identity, dependency graph, collision check, and build floorSigned-in author identity, crossplay safety, or save safety
09No shortcuts

Release gate

  • Clean-package install

    A separate clean game can install and run only the release artifact plus declared dependencies.

  • Update tested over prior public version

    The new Version redeploys, settings migrate or preserve correctly, and stale files do not survive unexpectedly.

  • Client/server matrix tested

    Every claimed side and platform was actually run, including mismatched-client behavior and server restart where relevant.

  • Persistence and removal tested

    New world, copied existing world, save–exit–reload, disable, uninstall, and dependency removal have documented outcomes.

  • Package contents audited

    No credentials, personal paths, source-only assets, editor cache, crash dumps, or unrelated executables are included.

  • User documentation complete

    Requirements, loader, supported revision, install, configuration, conflicts, removal, support/log location, license, and change notes are present.

10Stewardship

Publish for maintainability

A new Workshop item starts hidden, giving you time to set visibility, description, images, required items, and support information. Use that draft window. Invite a tester who receives the package through the real subscriber path; author machines often contain undeclared frameworks or stale files that mask a broken release.

For each update, retain the previous artifact and manifest, change Version, name the supported Palworld revision, document breaking config or save changes, and provide a rollback statement. When you cannot update promptly, mark compatibility honestly instead of leaving users to discover a native crash.

11Continue

Primary release references

12Verification

Research sources

The claims in this guide were checked against these current references. Primary sources are marked first.

FAQ

Frequently asked questions

Is Info.json required for Palworld’s official loader?

Yes. A package is recognized by its root Info.json, which supplies identity, compatibility metadata, dependencies, and deployment rules.

Does Version have to use semantic versioning?

No. The official loader compares Version as a plain string and reinstalls when it differs. Semantic versioning still helps users and release tooling understand changes, but you must change the string for every update.

Can the same package support client and server?

Yes. Add separate InstallRules and mark the server rule with `IsServer: true`; Targets may be the same or different. Document whether players also need the client rule.

Should PalMods import Info.json automatically?

Yes, as reviewable suggestions and first-class package metadata. ModName, Version, rules, server flag, tags, PackageName, dependencies, and MinRevision are valuable; author, side, crossplay, permissions, description, and save safety should not be guessed.