The “91MB Payload” Problem: A Legacy Bottleneck
In high-fidelity Power Apps, particularly for visual-heavy projects like Pabba Jewellers, image quality is non-negotiable. However, we recently hit a critical performance wall: a “91MB Payload” issue that was causing “Aw, Snap!” memory crashes on mobile devices and jittery gallery scrolling.
Why Standard Controls Fail at Scale
The root cause lies in the architectural limitation of the standard Power Apps Image control. Because it relies on a basic <img> tag, it triggers a “dumb” download:
- Zero Format Negotiation: The browser is forced to download a massive, unoptimized JPEG even if a 70% smaller WebP version is available.
- Network Congestion: Simultaneous downloads of uncompressed assets block the app’s primary data calls, leading to perceived lag.
- Memory Pressure: Large, unmanaged assets stay in the browser’s memory, taxing the UI thread and killing the 60FPS scrolling experience.
To solve this, I developed PowerImage Ultra-Light. This performance-first PCF component implements modern web standards to slash payloads by up to 80% without sacrificing a single pixel of jewelry detail.
📊 The ROI of Media Architecture
To justify the shift to modern formats, let’s look at the actual data impact for a typical enterprise gallery.
Real-World Compression Comparison
Source: Based on a standard 2,000 KB JPEG baseline
| Format | File Size (Avg) | Savings vs. JPEG | Browser Support |
|---|---|---|---|
| JPEG (Legacy) | 2,000 KB | 0% (Baseline) | 100% (Universal) |
| WebP (Modern) | 600 KB | ~70% Reduction | 96% |
| AVIF (Next-Gen) | 350 KB | ~82% Reduction | 93% |
Total Payload Impact (Gallery of 50 Images)
| Strategy | Total Data Downloaded | App Loading Speed |
|---|---|---|
| Standard JPEG Control | 100 MB | Very Slow (High Crash Risk) |
| WebP Negotiation | 30 MB | Fast / Responsive |
| AVIF Negotiation | 17.5 MB | Ultra-Fast Performance |
The Architectural Solution: Modern Format Negotiation
Instead of a simple <img> tag, I implemented a Format Negotiation strategy using the HTML5 <picture> element.
1. Priority Ranking (AVIF > WebP > JPEG)
The component doesn’t just display an image; it acts as a negotiator.
- AVIF: Offers next-gen compression for the best performance.
- WebP: The industry standard for modern web performance.
- JPEG: The mandatory fallback for legacy compatibility.
2. Native Lazy Loading
By implementing native loading="lazy", the component instructs the browser to defer the download of images until they are close to the viewport. This is critical for 500+ item galleries.
3. Responsive Container Sizing
To avoid Layout Shift (CLS), the component hooks into the PCF allocatedWidth and allocatedHeight. This ensures the container is reserved on the canvas before the asset arrives, maintaining a smooth 60FPS scrolling experience.
🛠️ Strategic Implementation: The “Triple-Asset” Pattern
To use this component effectively, your data source (SharePoint, Dataverse, or Azure Blob Storage) should be structured to store three URLs for every single image record.
The Workflow:
- Original: Upload high-resolution 2MB JPEG to storage.
- Conversion: Generate
.webpand.avifversions of that same image. - Storage: Store all three unique URLs in your database.
- PCF Mapping: Map these URLs to the corresponding properties in Power Apps.
Architect’s Insight: This approach ensures Digital Inclusion. High-end mobile users on 5G/WiFi receive the 350KB AVIF asset, while users on older enterprise hardware still receive the 2MB JPEG fallback. No user is left with a broken image link.
🌱 Sustainability & Operational Impact
- Carbon Footprint: Reducing payload from 100MB to 17.5MB per gallery load significantly reduces energy consumption for both data centers and mobile device batteries.
- Operational Excellence: This solution bridges the gap between high-fidelity marketing requirements (sharp photography) and technical constraints (app stability).
Deployment & Open Source
I have released PowerImage Ultra-Light as an open-source solution to help the community move past these performance hurdles.
Key Technical Specs:
- Zero Dependencies: Pure TypeScript for a minimal bundle size.
- Multi-Source Input: Simple property mapping for AVIF, WebP, and Fallback URLs.
- Environment Ready: Includes both Managed and Unmanaged solution packages.
🔗 Get the Component
You can find the source code, documentation, and solution packages on my GitHub:
Community Contribution: If you are an architect or developer facing similar payload issues, I encourage you to try this component and share your feedback. Let’s build faster, more resilient Power Platform solutions together.
Found this helpful? I’d appreciate it if you could share this with your team or mark this as a helpful resource in the Power Platform community!
Let’s Connect
How is your organization handling the shift to Managed Environments in 2026? I would love to hear your thoughts in the Power Platform Community or on LinkedIn.

Sunil Kumar Pashikanti
Principal Software Architect & Microsoft Community Super User. With 18+ years in the Microsoft ecosystem, I specialize in bridging the gap between enterprise business needs and advanced technical execution across Power Platform and Azure.