What would the file save path look like in iOS if it works like the image on Android?
Does this even work on iOS? Is it possible to save the file?
On iOS it doesn’t work like Android — you can’t use paths like
file:///storage/emulated/...
iOS does not allow direct access to arbitrary file system paths like that.
What works on iOS
You can only save files using:
App Inventor’s private storage
Or use components like File / Sharing / Download that follow iOS rules
So instead of a full path, just use something like:
backup.json
App Inventor will automatically save it in the app’s internal storage.
Where can I see an example of saving and reading a file? I probably can't do it myself...
Anke
April 27, 2026, 3:11pm
4
Hmm, and that would be?
See also here: https://doesappinventorrunonios.com/
With the File component you can save and read a text file, but you can't check if this file exists or see/get the path of this file. The FileScope concept does not work on iOS.
Here is an example of the Canvas and Web component, where you can see/get full paths:
As you can see, the ResponseFileName method unfortunately doesn't work on iOS. I've already pointed this out to Evan Patton.
Apart from that, these paths are "ephemeral" (volatile) and do not "survive" a reinstallation, as they are likely running in a temporary sandbox.
+1 to Anke’s answer — that’s the right way to do it on iOS.
Just to add: those full paths you see are internal and can change, so it’s best not to rely on them. Always use just the filename with the File component.
1 Like
Yeah, that makes sense. Thanks for pointing that out.
So basically on iOS:
we shouldn’t rely on ResponseFileName or full paths
and files are not persistent across reinstalls
Best approach is just to use the File component with a filename and treat it as app-internal storage.
Anke
April 27, 2026, 5:40pm
8
For one of my iOS apps, I need to download several large audio files via the Web component on the first launch, otherwise the app size limit will be exceeded. Since there's no way to check if the audio files exist , I can only solve this with a workaround. On the app's launch, I try to play the first audio file (path stored in TinyDB) using a Player component (muted). I then use a timer to check if IsPlaying is true. If it is, everything is fine; otherwise, the download restarts.
This seems to be a broader limitation on iOS, so I’ve opened an issue to track it properly:
opened 06:11PM - 27 Apr 26 UTC
status: new
feature request
**Describe the desired feature**
Currently, there is no reliable way to check w… hether a file exists on iOS using the File or Web components.
While Android provides more flexibility for working with files, iOS lacks a direct API to verify file existence. Additionally, methods like `ResponseFileName` do not behave consistently on iOS, making it difficult to determine whether a downloaded file is available.
This leads to unreliable workarounds such as:
- storing flags in TinyDB
- attempting to access or play a file and inferring existence indirectly
It would be useful to introduce a method such as:
- `File.Exists(filename)`
or equivalent functionality in the File component to allow developers to check file availability directly and consistently across platforms.
**Give an example of how this feature would be used**
A common use case is downloading media files (e.g., audio or images) on the first launch of an app.
Typical workflow:
1. On app start, check if a file exists locally
2. If it exists → use it directly
3. If not → download it using the Web component
Currently on iOS, developers cannot perform step 1 directly. As a result, they must:
- re-download files unnecessarily, or
- rely on indirect checks (e.g., using Player or other components)
With a file existence API, this workflow becomes simple, efficient, and reliable.
**Why doesn't the current App Inventor system address this use case?**
The current system does not expose any direct method to check file existence on iOS.
Although developers can store state using TinyDB or attempt indirect checks, these approaches are not reliable because:
- TinyDB can become inconsistent with actual file storage
- indirect checks (e.g., playback attempts) can fail for reasons unrelated to file existence
- file paths and storage behavior differ across platforms, especially on iOS
Additionally, methods like `ResponseFileName` do not provide a dependable way to verify file presence on iOS.
**Related discussion**
A recent community discussion highlights the same limitation and workarounds used by developers:
https://community.appinventor.mit.edu/t/external-storage-in-ios/172589?u=akash_gite
**Why is this feature beneficial to App Inventor's educational mission?**
Providing a simple and reliable way to check file existence would improve the learning experience by:
- reducing reliance on complex or hacky workarounds
- enabling clearer and more predictable app logic for beginners
- helping students understand file handling concepts in a straightforward way
- ensuring consistent behavior across platforms (Android and iOS)
This aligns with App Inventor’s goal of making app development accessible and intuitive, especially for students and educators who benefit from simple and deterministic APIs.
It would be great to have a direct file existence check instead of relying on workarounds like this.
1 Like
system
Closed
May 4, 2026, 6:22pm
10
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.