Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Unable to Write to App Group Shared Container on Device

Hi everyone,

I'm facing an issue where I cannot write a file to a shared App Group container in my tvOS app when running on a real device. My code works perfectly on the simulator, but fails on a physical device with a permissions error. I’ve set up an App Group with a custom identifier (e.g., group.<my.identifier>), and it’s correctly configured in the Capabilities section of Xcode for both my main app and widget targets.

Here’s the code I’m using to save a test file:

func saveTestFile() {
    guard let groupURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.<my.identifier>") else {
        print("Couldn't access the Group URL.")
        return
    }
    
    let containerURL = groupURL.appendingPathComponent("Library", isDirectory: true)
    if FileManager.default.isWritableFile(atPath: containerURL.path) {
        print("Directory IS writable")
    } else {
        print("Directory IS NOT writable")
    }

    let fileURL = containerURL.appendingPathComponent("test.txt")
    let content = "Hello App Group!"
    
    do {
        try content.write(to: fileURL, atomically: true, encoding: .utf8)
        print("File test.txt is saved at: \(fileURL.path)")
    } catch {
        print("Error while saving the file: \(error)")
    }
}

Console:

Directory IS NOT writable Error while saving the file: Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “test.txt” in the folder “<UUID>”." UserInfo={NSFilePath=/private/var/mobile/Containers/Shared/AppGroup/<UUID>/Library/test.txt, NSURL=file:///private/var/mobile/Containers/Shared/AppGroup/<UUID>/Library/test.txt, NSUnderlyingError=0x14387fbe0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

I’ve tried saving the file in different subdirectories within the App Group container:

  • Directly in groupURL (root of the container).
  • In groupURL.appendingPathComponent("Library").
  • In groupURL.appendingPathComponent("Caches").

Do you have any ideas what is the problem? Thanks in advance for any help!

Are you doing this from a standard app? Or from some sort of app extension?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Unable to Write to App Group Shared Container on Device
 
 
Q