A Better Way to Pick Web Images in SwiftUI
Why force users to save images to their photo library first? Introducing SwiftUI-Web-Image-Picker.
Why force users to save images to their photo library first? Introducing SwiftUI-Web-Image-Picker.
I've run into the same friction point in almost every app I build that handles user-generated content or profiles: getting images from the internet into the app.
The standard flow for a user usually looks like this:
That's six steps and a lot of context switching just to grab a picture from the web. It's tedious, it pollutes the user's photo library with temporary images, and it breaks the flow of your application.
I built a small Swift package to fix this: SwiftUI-Web-Image-Picker.
This utility provides a simple SwiftUI view that gives users a Photos-like picker flow, but for the web. Instead of bouncing between apps, they can search and select images directly from a web page right inside your app.
It acts as a drop-in component for your SwiftUI projects. You present it just like you would a standard picker, and it handles the heavy lifting of web browsing, parsing the page for images, and returning the selected image data back to your application.
Whenever possible, I want to keep users in the flow of the app. The iOS photo library is great for personal memories, but it shouldn't be a mandatory staging ground for every random avatar, meme, or reference image a user wants to upload.
By integrating a web picker directly, we cut the friction down to almost nothing. The user searches, taps, and they're done. No photo library cleanup required later.
If you're using an AI Coding Agent (like Cursor or Claude), you can integrate it instantly with this prompt:
Add the SwiftUI Web Image Picker to my project from https://github.com/fennelouski/SwiftUI-Web-Image-Picker
To add it manually via Swift Package Manager, paste this URL into the SPM box in Xcode:
https://github.com/fennelouski/SwiftUI-Web-Image-Picker
If you're building apps that rely on external images, give it a try. It's a small addition that makes a huge difference in the user experience.
Check it out on GitHub and let me know how it works for you.