Skip to content

Instantly share code, notes, and snippets.

@MWRevamped
Last active April 20, 2025 21:25

Details on the iOS "PosterBoard" System, How "Posters" work, and the Basics of Messing With It

(Mainly written by Dulark and Dootskyre with some additional help by MWRevamped)


Overview

  • What is PosterBoard?
  • Brief "Poster" Overview
  • Poster Editing Clarification

Poster Modification Process

  • LayeredAnimation and Modification (for designers, it’s recommended to skip to this)
  • Modification Process (Nugget)
  • Sharing Modified Posters
  • Legacy Modification Process (Jailbreak)
  • Testing Modified Posters before restoring

Miscellaneous

  • Available Platform for Sharing Modified Posters
  • Downloads for required files and example files
  • Other Recommended Documentations
  • Special Thanks

Overview

What is PosterBoard?

In iOS 16, Apple switched their former legacy "one customizable static/live wallpaper" system with a more advanced system that allowed for features including multiple slots for wallpapers that can be quickly switched, a customizable clock with widgets for each one, and depth effects created via ML subject recognition.

This new system is internally called PosterBoard, and as of the current major version of iOS, Apple has been building upon it.

What also came with PosterBoard were unique forms of wallpapers (which we’ll call Posters) that have special capabilities, and these are going to be more of the main focus with this documentation.

PosterBoard counts as an internal application, meaning that by using backup/restore programs like Nugget, users could import .tendies files for the application, giving them a gallery of whatever wallpapers were included in the file, and could look into the files of their own PosterBoard from AppDomain without having to jailbreak their device.

Brief "Poster" Overview

Posters are the advanced wallpapers created by Apple that are featured in the “Add New Wallpaper” menu. Internally, they are usually separated into folders found within Extensions in PosterBoard’s application files.

Examples of these posters include “Weather & Astronomy” which use plugins from the the apps of the same name to display special effects (ex, a live sky displaying the location’s weather, or orbit of a planet also based on location), the Pride and Unity posters (which also tie into a plugin, some using watchface assets) and “Collections” which includes the stock iOS default wallpapers.

Similar to Apple Watch watchfaces, wallpapers like these can only be normally created by them, and some are exclusive to certain devices or iOS versions, like the promotional ones used for iPhone and iPad marketing since 2022 (most of them have already been archived by pengubow, here's lunginspector’s tutorial on how to obtain them).

Poster Editing Clarification

Unfortunately, certain posters use plugins that are typically located somewhere in System, meaning that their assets are unmodifiable to those devices that are non-jailbroken or cannot be jailbroken. Because of this limitation, they won’t be focused on much. However, some posters use a unique system that’s both capable of several actions and is actually able to be modified for those with non-jailbroken devices as well, which the next segment is centered around.

Customization Capabilities

LayeredAnimation and Modification

LayeredAnimation is a subcategory of posters made of composed image assets that “animate” during certain device states (when the device is put to sleep/AOD, when the device wakes up and is on the Lock Screen, and when the device enters the Home Screen). These posters are usually kept in the com.Apple.WallpaperKit.CollectionsPoster Extensions folder.

Examples include the wallpapers for iOS 16, iOS/iPadOS 17, and the bundled Clownfish and Stripes wallpapers.

Also similar to their watchfaces (allegedly), Apple seems to develop and handle these wallpapers using their own exclusive internalUI software, Mica.

Internally, they basically utilize the image assets given to it in designated folders within a .ca bundle, and the typically named “main.caml” folder in each image asset’s folder provides the unique transformations for each one, with all of the files being handled within one folder, including other files like metadata. The .ca bundle also includes wallpaper.plist, which details the poster subsystem and the number of image assets used. It can also be modified to assign and enable/disable assets for Light and Dark Mode (and judging by the one for the “bokeh” posters, maybe even parallax effects?) for posters, allowing for custom wallpapers with light/dark/automatic switching and other unique features.

The “transformations” that are able to be applied to an image asset via main.caml includes moving/scaling/rotation across the X/Y axis, mesh warping, opacity changing, “ColorMatrix” color shifting, and many more for those with a better understanding of CoreAnimation. With the help of Wallpaper.plist, the image asset may also be able to overlap the clock with added Depth Effect support.

The main.caml file also dictates which image asset is used as long as it’s in a specific folder (typically in “assets”). LayeredAnimation accepts any generic static image file format as long as it’s referred to in that file.

With this info, users are able to modify the aforementioned files to develop their own unique posters with interactive animations. The following segment shall be a step-by-step process of how this would typically proceed for users with both jailbroken and non-jailbroken devices.

Modification Process (Nugget)

  1. Back up your device to your computer via iMazing. Do not enable backup encryption. Once the backup is complete, right click it in the sidebar and click Create an Editable Copy of this Backup. Once the copy is created, you can delete the backup if you'd like to.

  2. In the new editable backup, click the File System tab and open the Apps folder inside it. Find the folder named AppDomain-com.apple.PosterBoard and right click it. Then, select Copy to Mac.

  3. In Downloads, take the com.apple.PosterBoard.imazingapp file and rename it to com.apple.PosterBoard.zip (including the file extension!) Then uncompress the file.

  4. To get to your wallpapers in the now uncompressed com.apple.PosterBoard folder, go to the file path /com.apple.PosterBoard/Container/Library/Application Support/PRBPosterExtensionDataStore/[IDFolder]/Extensions. The different categories of posters are located here, but mainly you'll want to go to com.apple.WallpaperKit.CollectionsPoster.

  5. Find a folder that contains an existing poster’s resources, their names being based off of a UUID (ex. 916DEE65-FC95-4CB9-88BC-D8FFEAAD1A82). From here, modify files within descriptors (modifying an existing poster preset that’s able to be added from the Add New Wallpaper menu).

  6. Locate the assets in /versions/[highest number in directory]/contents/. The “numbered folder” also has .plists that contain possibly modifiable info on the Lock Screen clock and chosen widget configurations.

  7. Within contents are .ca bundle(s) that contains the desired wallpaper assets. From here, you can do whatever you want to the bundle, even including replacing it entirely. Some wallpapers contain one .ca file, but some can contain two .ca files for floating and background assets, which are used for the depth effect. The wallpaper.plist file mainly identifies and dictates which elements are utilized.

  8. When you finish your edits, zip the descriptors folder and rename the .zip to .tendies. You can test applying it with Nugget, then share the .tendies.

Sharing Modified Posters

After the process, if you want to share their custom poster(s) to others, you could either upload the modified files online, or additionally compress it into a ".tendies" file and share that file with others.

The preferred method of compressing custom posters into .tendies files is relatively simple, all you need to do is zip the descriptors folder and rename the extension from .zip to .tendies (same as renaming the file, just change the text after the .)

Additional notes, for .tendies, you don't need to randomize the UUID for the descriptors as Nugget will automatically do that for you, although you can zip the Container folder, the UUIDs won't be randomized and you'll have to make sure that the separate posters have different UUIDs. (and since we're speaking of multiple posters, I should mention that yes! you can have multiple custom posters in a .tendies file!)

Modification Process (Jailbroken, Legacy)

  1. Locate the PosterBoard internal application’s resources and specifically where it handles it’s LayeredAnimation posters in /var/mobile/Containers/Data/Application/[PosterBoardID]/Library/Application Support/PRBPosterExtensionDataStore/[IDFolder]/Extensions.

The different categories of posters are located here, but mainly you'll want to go to com.apple.WallpaperKit.CollectionsPoster.

  1. Find the folder that contains an existing poster’s resources, their names being based off of a UUID (ex. 916DEE65-FC95-4CB9-88BC-D8FFEAAD1A82).

  2. From here, either modify files within configurations (modifying a poster that’s already in the quickswitch gallery, easier for sharing via Nugget) or descriptors (modifying an existing poster preset that’s able to be added from the Add New Wallpaper menu).

  3. Locate the assets in /versions/[highest number in directory]/contents/. The “numbered folder” also has .plists that contain possibly modifiable info on the Lock Screen clock and chosen widget configurations.

  4. Within contents are .ca bundle(s) that contains the desired wallpaper assets. From here, you can do whatever you want to the bundle, even including replacing it entirely. Some wallpapers contain one .ca file, but some can contain two .ca files for floating and background assets, which are used for the depth effect. The wallpaper.plist file mainly identifies and dictates which elements are utilized.

  5. If you chose to modify the assets in configurations, switch to a different poster and then back to the edited one to see your changes. If you chose descriptors, open the Add New Wallpaper menu and then select the poster with the edited assets.

Testing Modified Posters before restoring

It can be irritating and a bit of a hassle to constantly keep restoring your iDevice when you make a slight new change or fix, that’s where the Xcode Simulator app comes in. You can test your custom posters before restoring onto your iDevice by replacing the wallpaper assets (shown in the steps below).

(If you already have an iOS 18 runtime installed or simply know how to install one then you can skip to step 4)

  1. Make sure Xcode is installed, then open it and click on “Product” on the top of your screen, next move your cursor down to “Destination” and then select “Manage Run Destinations…”

  2. Select the button that says “Simulators” and then press the plus in the bottom left of the window. There’s a dropdown next to “OS Version:”, if it says “iOS 18.x” then you’re good to proceed, however, if it says “No Runtimes” or an iOS version that isn’t part of 18 you’ll need to press on it and select “Download more simulator runtimes…”

  3. Under the “Platform Support” text will be a few runtimes you can download, look for iOS 18 and press “Get” and wait for it to install.

  4. Open Finder, press (COMMAND, SHIFT, and PERIOD) at the same time and go to this location “/Users/YOURUSER/Library/Developer/CoreSimulator/Devices/“. There’s going to be a lot of random numbers and letters but that’s fine, just open one of the folders and you’ll see a “data” folder and a “device.plist”. Open the device.plist to see which device that simulator is, if you want to use that simulator for testing you can continue with the next step. Otherwise, go back to the Devices folder and continue looking through the long named folders until you find the device you want to test with.

  5. From within the “data” folder, proceed to “Library/Application Support/PRBPosterExtensionDataStore/“, now go back to your custom Poster and open the PRBPosterExtensionDataStore folder from before, you should see a folder with a number like 59, 60, 61, just copy that folder and paste it in the Simulator’s PRBPosterExtensionDataStore folder.

  6. Open spotlight search (either with the little magnifying glass key or by pressing COMMAND and SPACE at the same time) and type “Simulator”, if it doesn’t open into the device you wanted to test with, press the “File” button at the top of your screen, go to “Open Simulator”, then “iOS 18.x”, and select the device you wanted to test with.

  7. See if your custom Poster came out the way you intended and then you can go back to Modification Process and restore it to your iDevice!

Have fun!!

Miscellaneous

Available Platform for Sharing Modified Posters

Among other things that are able to be modified via Nugget, me (Dulark) and pengubow have a Discord server centered around both that and mainly modifying PosterBoard, it’s also where the files that contain nearly every unique exclusive iOS/iPadOS poster archived (as of now, including the 16e) comes from. As an effort to encourage the creation and sharing of user-made custom dynamic posters, I have implemented a space where users are able to showcase and publish their own files in one area. For more info, check out the Discord server from here.

Downloads for required and example files

Nugget - https://cowabun.ga

Example files - https://drive.google.com/file/d/1XLxI6mII1vcpfLpdOcnCx1F_hkejAczh/view?usp=sharing

Example .tendies - https://cowabun.ga/wallpapers

Xcode - https://developer.apple.com/xcode/

Mica - Totally don't ask one of the three of us (Dulark, dootskyre, MWRevamped) :3

Other Recommended Documentations

Throughout my attempts on finding more info related to PosterBoard, I’ve found several other write-ups that also documented certain aspects of it. One in particular that I’ve discovered and recommend viewing as well is this one from pookjw also known as @_silgen_name on X/Twitter, who likely documented some things more accurately than I did.

Special Thanks

  • pengubow for being one if-not the biggest contributor to researching PosterBoard and archiving posters (they even brought an iPad 7 with this being one of their reasons for purchasing, they deserve props)

  • Dootskyre for helping out with this documentation and being the first user interested enough in the idea of modifying PosterBoard to achieve custom dynamic posters (she also bought an iPad 7 for this sole purpose)

  • MWRevamped for additionally helping out with some documentation, providing a newer version of Mica, and being a guinea pig

  • iMazing for providing a janked-but-viable way to share sets of custom/modified dynamic posters to users with jailed/jailbroken devices

  • Whoever thought it was a good idea to make PosterBoard count as an “application” rather then some system located in the iOS internal file equivalent of the middle of nowhere

@gliddd4
Copy link

gliddd4 commented Mar 11, 2025

Awesome!

@ImUltik
Copy link

ImUltik commented Mar 31, 2025

cool

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment