RORK LABJP
PLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updatesPLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updates
Articles/Dev Tools
Dev Tools/2026-09-01Intermediate

Adding image paste with expo-paste-input, and moving the disappearing file:// URIs out of cache

How to let users paste images and GIFs into a chat input with expo-paste-input. The URIs that onPaste hands you are temporary files that can vanish before the user hits send. Here is the relocation code and the order I verify it on real devices.

Expo193React Native234expo-file-systemImage Upload2Indie Development25

Premium Article

Let me paste a screenshot and send it. If your app has a chat screen, that request arrives sooner or later. For a long time React Native's TextInput accepted text and nothing else, so the answer was either to write native code yourself or to say no.

expo-paste-input, published at the end of August, opens a third door. When I wired it up, the pasting itself worked almost immediately. What cost me time came afterward. The image showed up fine right after pasting, but if the user waited a while before sending, it sometimes never arrived. The cause was that I had misread what the file:// URI the module hands back actually is.

This is the record of that implementation, including the part that closes the hole.

It starts with expo-, but it is not an Expo SDK module

The first thing worth knowing is where this module comes from.

expo-paste-input is an MIT-licensed community module published at arunabhverma/expo-paste-input. It is not part of the SDK that the Expo team ships. Because it is written with the Expo Modules API, npx expo install expo-paste-input works, and the name begins with expo-. Those two facts together make it very easy to assume it is first-party.

This is not a comment on quality. It is a question of who maintains it. When the SDK version moves, the person who keeps up is an individual maintainer, not the Expo team. As an indie developer deciding whether a module like this belongs in production, my test is whether I could fix it myself if it broke. The native implementations here are a few hundred lines per platform, and the module has exactly one responsibility: intercept the paste event and write the result to a temporary file. That is a readable amount of code. So I adopted it.

The flip side is real. Install it without reading it, and every SDK bump becomes a build failure you cannot explain.

Installing it means stepping off the preview loop

The README contains one short but decisive line: the library ships native code, so you have to rebuild, and Expo Go will not work.

# Install
npx expo install expo-paste-input
 
# Native code is involved, so nothing runs until you get through here
npx expo run:ios
npx expo run:android

If you have been growing a Rork-generated app by checking it in preview, that line matters more than it looks. The moment you add paste support, your verification path changes from open the preview to build and install on a device. One check goes from seconds to minutes.

I prefer to make that switch by calendar rather than by feature. If a native module is anywhere on the plan, I move to a development build at the start of the week rather than the moment I need it. The period where you are drifting between both environments is where the mistakes happen. I covered getting onto real hardware in testing on a real iPhone with Rork Companion; this is the decision that comes right after it.

Here is how I weigh it.

SituationRecommendationReasoning
Still iterating on screen structureDefer paste supportDo not spend iteration speed before the shape is settled
Chat is the core feature and users are askingMove to a development build nowA missing core feature outweighs iteration speed
This would be your only native moduleSafe to moveFewer native dependencies means more stable rebuilds
You are submitting for review this weekStart after submissionDo not touch the native layer right before a submission

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'll be able to decide, for your own situation, whether to leave preview-based iteration for a development build before you add paste support
You'll be able to write the relocation step that moves temporary paste files somewhere the system cannot reclaim them, heading off the kind of vanished-image report that is nearly impossible to reproduce later
You'll be able to hold the iOS sticker path and the Android clipboard path as a fixed order of checks on real hardware instead of a vague intention to test both
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 $15 for lifetime access
View Membership →

Related Articles

Dev Tools2026-04-08
Rork × Turborepo Monorepo Architecture: Managing Shared Code and Type-Safe Libraries Across Multiple Apps
Learn how to manage multiple Rork/Expo apps with Turborepo in a single monorepo. This guide covers shared component libraries, common type definitions, custom hooks, and utility functions — helping you move faster with higher code quality across all your apps.
Dev Tools2026-08-31
Three Minutes After the Screen Locked, My expo-audio Ambient Sound Went Silent
Why expo-audio stops playing when the screen locks, diagnosed as three separate layers: build config, audio session, and lock screen integration. The three-minute stop on Android is documented behavior.
Dev Tools2026-08-29
The Remote Config keys you add after your release path closes are invisible to the build already on devices
A record of recounting what I can still change remotely before my release path closes. A key you add in the console does nothing unless a build that reads it is already on devices. Which switches to ship in the last build, and a shared-defaults bug I measured.
📚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 →