---
title: Reduce Live Update Size
description: Make Capacitor and Cordova Live Updates smaller and faster — drop source maps, optimize assets, and choose between zip and delta (manifest) delivery.
---

# Reduce Update Size

Smaller bundles download faster and fail less often on flaky connections, and they keep your [data transfer](limits.md) down. There are two levers: shrink the assets, and choose the right delivery format.

## Optimize your assets

A few changes cover most of the wins:

- **Drop source maps.** They're often the majority of a bundle's size and don't belong in production downloads. In Vite, set `build.sourcemap: false`; in Angular, build with `--source-map=false`. If you need them for error tracking, upload them to your error-tracking service separately.
- **Move heavy static assets to a CDN.** Hero images, marketing media, and downloadable files that don't have to ship inside the bundle should be served from a CDN and loaded on demand.
- **Audit your bundle.** Tree-shaking and minification are handled by most modern build tools, but a tool like `rollup-plugin-visualizer` or `webpack-bundle-analyzer` helps find unexpectedly large dependencies.

## Choose the delivery format

### Zip (recommended)

By default, the whole web folder is compressed into a single `.zip` and uploaded. The device downloads one compressed file and extracts it. This is almost always the right choice — compression typically halves the size and the download is a single request.

### Delta updates (manifest)

Live Updates can be smaller if only modified files are downloaded. For this, each bundle requires a **manifest** — a JSON file containing hashes of the files in the bundle. When updating, the manifest of the new bundle is compared with the current one, and only the changed files are downloaded.

!!! warning "Try the zip artifact type first"

    Delta updates are only beneficial if your app contains large files that rarely change. Most modern frameworks generate content-hashed filenames on each build, causing every file to look changed — which makes delta comparison ineffective and can result in hundreds of individual file requests instead of one zip download. Start with `zip` and only switch to `manifest` if you have a clear, measured need.

#### Generate the manifest file

Generate a manifest with the [`apps:liveupdates:generatemanifest`](../cli/commands.md#appsliveupdatesgeneratemanifest) command, after building your web assets but before copying them to the native projects:

```bash
npm run build
npx @capawesome/cli apps:liveupdates:generatemanifest --path www
```

The easiest way to keep it in sync is to add it to your build script:

```json
{
  "scripts": {
    "build": "ng build && npx @capawesome/cli apps:liveupdates:generatemanifest --path www"
  }
}
```

!!! warning "Manifest required on both sides"

    Delta updates only work when two manifests are available for comparison. Always include the manifest file in your native releases — if one is missing, all files are downloaded.

#### Upload a delta bundle

Upload with the `manifest` artifact type so files are uploaded individually rather than as a single zip:

```bash
npx @capawesome/cli apps:liveupdates:upload --artifact-type manifest
```

!!! note "CLI only"

    Delta updates can only be created with the CLI, not the Console.
