RORK LABJP
MAX — Rork Max is built on Claude Code and Claude Opus 4.6, generating native Swift apps directly instead of React NativeAPPLE — Rork Max targets the whole Apple ecosystem: iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and iMessageWORKFLOW — In practice, users settle into letting the AI scaffold while they rewrite the state management and data layer themselvesSEED — Rork raised a $15M seed led by Left Lane Capital in April, with Peak XV, True Ventures, and a16z Speedrun joiningPAPERLINE — Rork acquired app builder Paperline and says it will stay acquisitive to bring in engineering talentREVIEW — Three-month revisit reviews are growing, clarifying where the tool shines and where it doesn'tMAX — Rork Max is built on Claude Code and Claude Opus 4.6, generating native Swift apps directly instead of React NativeAPPLE — Rork Max targets the whole Apple ecosystem: iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and iMessageWORKFLOW — In practice, users settle into letting the AI scaffold while they rewrite the state management and data layer themselvesSEED — Rork raised a $15M seed led by Left Lane Capital in April, with Peak XV, True Ventures, and a16z Speedrun joiningPAPERLINE — Rork acquired app builder Paperline and says it will stay acquisitive to bring in engineering talentREVIEW — Three-month revisit reviews are growing, clarifying where the tool shines and where it doesn't
Articles/Dev Tools
Dev Tools/2026-06-21Advanced

Your Rork App's Photos Look Sideways Only After Upload — Normalizing EXIF Orientation and Stripping Location Metadata

A photo that looks upright in your app rotates 90 degrees once it hits your server. The cause is the EXIF Orientation tag. Here's how to bake the rotation into pixels and strip location metadata with expo-image-manipulator before uploading.

Rork502Expo139Image UploadEXIFPrivacy8

Premium Article

A user uploads a photo. On their own phone it looks perfectly upright, but the version stored on your server — or shown to another user — is rotated 90 degrees. As an indie developer running image-heavy apps, I have hit this more than once. The first time, a user told me "the photo I uploaded shows up sideways on my friend's screen," and I spent half a day chasing it. The short version: the pixels were never rotated. The rotation lived in a separate place, the EXIF Orientation tag, and the two sides of the pipeline disagreed about whether to read it.

The same structure shows up in apps you build with Rork. React Native's <Image> respects the Orientation tag and renders correctly, but the server you upload to, the image library that resizes it, or a third-party preview often ignore the tag entirely. Today we'll build the piece that prevents all of this: bake the rotation into the pixels and drop the EXIF — including location — before the file is uploaded.

It Looks Right in the App but Tilts Only After Transfer

Start by isolating the symptom. Three observations almost always confirm an Orientation issue:

  1. The same file looks upright inside your app's <Image>
  2. Uploaded to a server and opened in a browser or another library, it is rotated
  3. Portrait shots break far more often than landscape ones

When all three line up, it is the Orientation tag. An iPhone camera, even when held vertically, stores the raw landscape pixels from the sensor and writes "rotate this 90 degrees clockwise when displaying" into the Orientation tag. <Image> reads the tag and shows it correctly; a server that ignores the tag shows the raw, sideways pixels. That is the whole disagreement.

The Cause Is EXIF Orientation — the Pixels Never Moved

The Orientation tag is an integer from 1 to 8 describing a rotation-and-flip combination. In practice you'll meet four of them.

ValueMeaningTypical source
1No rotation (upright)Landscape capture, already normalized
3Rotated 180 degreesPhone held upside down
6Upright after 90 degrees clockwisePortrait capture (most common)
8Upright after 90 degrees counter-clockwisePortrait, opposite way

Value 6 dominates, and every case I was reported was a 6. The key point: when the value isn't 1, the pixels and the display instruction are out of sync. Since your upload target ignores the tag, the most portable fix is to physically rotate the pixels on your side and reset the tag to 1.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
You can finally diagnose why a photo looks upright on your device but rotates 90 degrees on your server or a friend's screen, reading it straight from the EXIF Orientation value (1-8)
You'll get a working expo-image-picker + expo-image-manipulator implementation that bakes rotation into pixels and removes EXIF before upload
You'll be able to stop leaking the GPS location embedded in user photos before the file ever leaves the device
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Dev Tools2026-06-29
Handling iOS Limited Photo Library Access in a Rork (Expo) App
Handle iOS limited photo library access (selected photos only) correctly in a Rork (Expo) app. Covers the three states of full / limited / denied, designing a screen that works from the selected subset, and a path to add more photos, all with working code.
Dev Tools2026-06-23
The Private Screen That Lingers in the App Switcher — Hiding the Snapshot iOS Takes the Moment You Background Your App
When you send a React Native app generated by Rork to the background, iOS photographs the current screen for the App Switcher and writes it to disk. Journals and personal input screens linger there in plain sight. This walks through the iOS privacy overlay (why inactive, not background), Android's FLAG_SECURE, scoping it to sensitive screens only, and screenshot detection — all in working code.
Dev Tools2026-05-21
Rork iOS App Rejected with ITMS-90683 on TestFlight — How to Fix Missing Purpose Strings via app.json
If your Rork-built iOS app passes upload but gets an email titled ITMS-90683: Missing Purpose String in Info.plist, this guide walks through the real cause and the permanent fix via app.json, based on 12 years of shipping personal iOS apps with the same problem appearing across new SDK updates.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →