> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joinmarkt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish and updates

> Put your theme live, handle warnings, take theme updates without losing your edits, and how platform fixes reach your store.

The builder saves your work as you edit. Saved changes stay a draft until you publish.

## Publish

**1. Open Publish**

Click **Publish** in the top bar. The dialog checks the whole theme first.

**2. Read the check**

* **No problems found**: you can publish.
* **Warnings** (yellow): you can still publish. The storefront ignores what they point at.
* **Errors** (red): fix them before publishing. Each one names the file and, where possible, the line.

**3. Publish**

The theme is built and goes live on your subdomain and custom domain. The dialog shows when you last published.

### Remove unused values

Templates can keep values that no longer match a setting, for example after you remove a setting from a schema. These show as warnings such as `"old_key" is not a setting (ignored)`. When there are any, **Publish** shows **Remove unused values**, which deletes them from your templates in one step. You can undo it.

### Common checks

| Message | Kind | Fix |
| - | - | - |
| `setting "x" is declared twice` | Error | Give each setting a unique `id` in the schema. |
| `range "x" default must be between min and max` | Error | Change the `default`, `min` or `max`. |
| `"x" default is not one of its options` | Error | Use one of the `options` values as `default`. |
| `Section "x" uses unknown type "y"` | Error | Create `src/sections/y/` or fix the `type`. |
| `Block "x" uses unknown type "y"` | Error | Declare the block type in the section schema. |
| `Preset "x" uses unknown block "y"` | Error | Declare the block type, or remove it from the preset. |
| `"Name" is used 3 times (max 1)` | Error | Remove extra copies of the section. Its schema sets `limit`. |
| `"Name" is not meant for this page` | Warning | The section's `templates` does not include this page. |
| `"x" is not a setting (ignored)` | Warning | Use **Remove unused values**. |
| `"x" has an invalid value (default used)` | Warning | Pick a valid value in Visual. |
| `The home page template is missing` | Error | Add `templates/index.json`. |
| `index.html is missing` | Error | Restore `index.html`. See [Theme structure](https://docs.joinmarkt.com/themes/structure.md#platform-files). |
| `Platform files are replaced at build time; edits here are ignored` | Warning | Move your change out of `src/platform/`. |

## Theme updates

When the theme you started from gets a new version, **Update theme** appears in the builder's top bar. Updating never overwrites your edits without asking.

For each file, Join Markt compares three versions: the file as installed, your current file, and the new theme file.

| Situation | What happens |
| - | - |
| You never changed the file | It takes the new version automatically. |
| You changed it, the update did not | Your version stays. |
| You and the update both changed it | You choose: **Keep mine** or **Use update**. |
| You changed it, the update removes it | You choose: **Keep mine** or **Remove it**. |
| You deleted it | It stays deleted. |

**1. Open Update theme**

The dialog lists files updated automatically, files that need your choice, and your edits that are kept.

**2. Decide each conflict**

Click **Show changes** to see your file and the update side by side. Then pick **Keep mine** or **Use update**. A file you and the update both changed keeps your version unless you pick otherwise.

**3. Apply, then publish**

Applying changes your saved theme. Publish to put it live.

If you chose **Keep mine**, Code keeps reminding you that a newer version exists for that file. Open **Compare with theme** to look again, and **Restore theme version** to take it later.

## Platform updates

The shared storefront code under `src/platform/` (cart, checkout, routing, data loading) belongs to Join Markt. When it is updated, every published store is rebuilt automatically:

* Only your **published** files are used. Drafts never go live this way.
* If you publish while the rebuild runs, your publish wins.
* If a rebuild fails, your current live store stays as it is and the rebuild is retried later.

Open previews also pick up platform changes on their next build. You do not need to republish to get platform fixes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.