Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/organization/early-adopter-features/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ Limitations:
- [Dynamic Alerts](/product/alerts/create-alerts/metric-alert-config/#dynamic-alerts)
- [New Trace Explorer With Span Metrics](/product/explore/new-trace-explorer/)
- [OpenTelemetry (OTLP) Logs Endpoint](/concepts/otlp/#opentelemetry-logs)
- [Size Analysis](/product/size-analysis/)
42 changes: 42 additions & 0 deletions docs/platforms/android/size-analysis/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: Size Analysis
sidebar_title: Size Analysis
sidebar_order: 5200
description: Upload Android builds to Sentry for Size Analysis.
---

<Include name="size-analysis/ea" />

[Size Analysis](/product/size-analysis) helps you monitor your mobile app's size in pre-production to prevent unexpected size increases (regressions) from reaching users. Aside from being courteous to your users, a smaller app size helps boost installation and retention rates, especially for customers with limited storage or slower connections.

## Getting Started

**Accepted Formats**: AAB (preferred) | IPA
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Accepted Formats**: AAB (preferred) | IPA
### Prerequisites
**Accepted Formats**: AAB (preferred) *or* IPA
**Upload Mechanisms**: [Gradle](#uploading-with-gradle) version `6.0.0-alpha.6` or higher *or* [the Sentry CLI](#uploading-with-the-sentry-cli)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feels a little weird calling this a "Prerequisite"

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Incorrect File Format Listed in Android Docs

The Android Size Analysis documentation's "Accepted Formats" section includes "IPA", which is an iOS-specific file. For Android, this format should be "APK".

Fix in Cursor Fix in Web


**Upload Mechanisms**: [Gradle](#uploading-with-gradle) | [Sentry CLI](#uploading-with-the-sentry-cli)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Upload Mechanisms**: [Gradle](#uploading-with-gradle) | [Sentry CLI](#uploading-with-the-sentry-cli)


### Uploading with Gradle

<Include name="size-analysis/upload-gradle" />

### Uploading with the Sentry CLI

<Include name="size-analysis/upload-cli-android" />

## Upload Metadata

<Include name="size-analysis/upload-metadata" />

### Build Configuration

<Include name="size-analysis/build-configuration-android" />

## Best Practices

- **Upload release builds only** - Only upload optimized release builds to get accurate size metrics that represent what users download. Debug builds contain extra symbols and debugging information that inflate the size.

- **Upload on every commit to main** - Configure your CI pipeline to upload builds for every commit merged to your main branch. This creates a complete historical record of your app's size evolution and helps identify which commits introduced size changes.

- **Upload on every PR** - Set up CI to upload builds for every pull request. This enables automatic size comparisons between the PR build and the base branch, allowing you to catch size regressions during code review before merging.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Upload on every PR** - Set up CI to upload builds for every pull request. This enables automatic size comparisons between the PR build and the base branch, allowing you to catch size regressions during code review before merging.
- **Upload on every PR** - Set up CI to upload builds for every pull request. This enables automatic size comparisons between the PR build and the base branch, allowing you to catch size regressions during code review and before merging.


<PageGrid />
111 changes: 111 additions & 0 deletions docs/platforms/android/size-analysis/insights.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
title: Insights
sidebar_order: 5250
description: Preview how Size Analysis reports highlight Android build trends.
---

TODO: ADD SOME PICS

Size Analysis Insights point out how opportunities to reduce your Android app's size. They spot patterns like duplicate files, oversized media, or unneeded assets, and list exactly what to fix along with the estimated size savings.

## Android Insights

Below are a list of available insights for Android builds, followed by more details about each insight:

| Insight | What it flags |
| --------------------------------------------------------- | --------------------------------------------------------------------- |
| [Duplicate Files](#duplicate-files) | Flags identical payloads so you can drop the duplicates |
| [Large Images](#large-images) | Surfaces oversized image assets worth recompressing or resizing. |
| [Large Videos](#large-videos) | Highlights video files that are bigger than typical delivery budgets. |
| [WebP Optimization](#webp-optimization) | Tests PNG/JPEG bitmaps to see if lossless WebP would shrink them. |
| [Large Audio](#large-audio) | Surfaces hefty audio tracks that could be recompressed or trimmed. |
| [Hermes Debug Info (RN Only)](#hermes-debug-info-rn-only) | Points to bundled Hermes bytecode still carrying debugger metadata. |

### Duplicate Files

**What it is**: Finds matching files or directories inside `assets/`, `res/`, or embedded libraries.

**How to fix**: Keep one copy and remove or dedupe the rest. For resource folders, consolidate the asset into a shared module or asset pack so the APK only bundles it once.

### Large Images

**What it is**: Flags image files larger than 10 MB.

**How to fix**: Compress images with lossless WebP or resize them before bundling.

**Options**:

- Use Android Studio: right-click an image → **Convert to WebP** → choose **Lossless**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Use Android Studio: right-click an image → **Convert to WebP** → choose **Lossless**.
**Options:**
- Use Android Studio: right-click an image → **Convert to WebP** → select **Lossless**.

- Use the command line:

```bash
# Install cwebp
brew install webp

# Convert PNG to lossless WebP
cwebp -lossless input.png -o output.webp

# Convert JPEG to lossless WebP
cwebp -lossless input.jpg -o output.webp
```

Large hero images or splash screens may also load more efficiently if served over the network instead of being bundled with the app.

### Large Videos

**What it is**: Highlights bundled video assets above 10 MB.

**How to fix**: Re-encode them to H.264 or HEVC with a lower bitrate, shorten the clip, or host the video remotely and stream it on demand. To shrink a clip in place, try FFmpeg:

```bash
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow -c:a copy output.mp4
```

Lower the `-crf` value for higher quality (and larger files), or raise it for smaller files.

### WebP Optimization

**What it is**: Tests every PNG, BMP, JPG, or JPEG (excluding `.9.png`) against lossless WebP conversion. If the WebP variant saves at least 500 bytes, the insight lists the asset.

**How to fix**: Convert the listed bitmap to lossless WebP and update its references. Pick one of the paths below.

#### Option 1: Android Studio

1. In Android Studio, right-click the image.
2. Choose **Convert to WebP…**.
3. Select **Lossless** (API 18+ supports it) and review the preview.

#### Option 2: Command line

```bash
# Install cwebp
brew install webp

# Convert PNG to lossless WebP
cwebp -lossless input.png -o output.webp

# Convert JPEG to lossless WebP
cwebp -lossless input.jpg -o output.webp
```

> Lossless WebP with alpha requires `minSdkVersion` ≥ 18. For older devices, keep PNG fallbacks for assets that rely on transparency.

### Large Audio

**What it is**: Surfaces audio files larger than 5 MB across `res/raw`, `assets`, or libraries.

**How to fix**: Re-encode them at a lower bitrate or modern format using FFmpeg or your DAW, trim unused segments, or stream long-form media instead of bundling it. A quick FFmpeg recompress:

```bash
ffmpeg -i input.wav -c:a aac -b:a 128k output.m4a
```

Tweak the bitrate to balance quality and size.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This 'Tweak' line feels out of place, is it one of the options to fix this issue, or does it relate to the bash snippet?


TODO: be clearer about this bitrate line

### Hermes Debug Info (RN Only)

**What it is**: Detects Hermes bytecode bundles that still contain debug info sections.

**How to fix**: Build the React Native bundle in release mode (`react-native bundle --dev false` or the Gradle release task) so Hermes strips debug sections before packaging.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
45 changes: 45 additions & 0 deletions docs/platforms/apple/guides/ios/size-analysis/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: Size Analysis
sidebar_order: 5200
description: Upload iOS builds to Sentry for size analysis.
---

<Include name="size-analysis/ea" />

[Size Analysis](/product/size-analysis) helps you monitor your mobile app's size in pre-production to prevent unexpected size increases (regressions) from reaching users. Aside from being courteous to your users, a smaller app size helps boost installation and retention rates, especially for customers with limited storage or slower connections.

## Getting Started

**Accepted Formats**: XCArchive (preferred) | IPA
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Accepted Formats**: XCArchive (preferred) | IPA
### Prerequisites
**Accepted Formats**: XCArchive (preferred) *or* IPA


**Upload Mechanisms**: [Fastlane Plugin](#uploading-with-fastlane) | [Sentry CLI](#uploading-with-the-sentry-cli)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Upload Mechanisms**: [Fastlane Plugin](#uploading-with-fastlane) | [Sentry CLI](#uploading-with-the-sentry-cli)
**Upload Mechanisms**: [Fastlane Plugin](#uploading-with-fastlane) (version 1.34.0 or higher) *or* [Sentry CLI](#uploading-with-the-sentry-cli)


### Uploading with Fastlane

<Include name="size-analysis/upload-fastlane" />

### Uploading with the Sentry CLI

<Include name="size-analysis/upload-cli-ios" />

## Upload Metadata

<Include name="size-analysis/upload-metadata" />

### Build Configuration

<Include name="size-analysis/build-configuration-ios" />

## App Thinning

<Include name="size-analysis/app-thinning" />

## Best Practices

- **Upload release builds only** - Only upload optimized release builds to get accurate size metrics that represent what users download. Debug builds contain extra symbols and debugging information that inflate the size.

- **Upload on every commit to main** - Configure your CI pipeline to upload builds for every commit merged to your main branch. This creates a complete historical record of your app's size evolution and helps identify which commits introduced size changes.

- **Upload on every PR** - Set up CI to upload builds for every pull request. This enables automatic size comparisons between the PR build and the base branch, allowing you to catch size regressions during code review before merging.

<PageGrid />
Loading