Skip to content

Changelog

What changed in each version of Scenery, newest first.

Looking for the scripting runtime instead? See the scripting changelog.

1.1.22 – September 2026 TestFlight

In testing

This version is on TestFlight and has not reached the App Store yet.

Added

  • Take an experience offline. Right-click an experience and choose Download for Offline Use, or use Save Offline on its detail card, and it runs with no network at all – models, audio, video and scripts included. A ring fills in the card's corner while it downloads, tap it to stop, and downloaded experiences carry an Offline badge. They gather under a Downloaded filter in your experience library and in a section of Discover, both of which keep working when the device has no connection. When the author changes an experience you have downloaded, the badge reads Update Available and the menu offers Update Download; nothing is ever re-downloaded behind your back, so a device set up for a fair or an event stays exactly as you left it. Your own experiences and your team's are always downloadable, whatever your role on the team. For anyone else's, the author decides: Allow Offline Download in Experience Settings, beside Allow Featuring. It is off by default, because a downloaded copy keeps working after an experience is withdrawn.

Fixed

  • The Scenery logo on a shared photo is the right size again. It was rendering at roughly half the size it was designed for, small enough to be easy to miss, on every capture shared from the app.
  • A toast that has been swiped away comes back. Dismissing a notification banner with a swipe left it in place invisibly, and every later banner was silently refused. Banners also lost their background from the second one onwards, and stopped responding to taps once dismissed.
  • Experiences with large models open in seconds instead of minutes. A scene whose models carry a lot of separate parts could sit on the loading screen for well over a minute on Mac. The same scene now loads in a few seconds. Placing one model several times in a scene no longer costs anything extra either, where before each copy was loaded from scratch.
  • The app no longer freezes after opening a few experiences in a row. Quitting an experience while it was still settling left the whole session in memory, so the third or fourth one you opened could stall on a single frame, and sound from an experience you had left kept playing.

1.1.21 – August 2026

Bloom, scenes that can start on a wall or a table rather than only on the floor, objects are named when you create them, plus fixes for interface panels on Apple Vision Pro and for panels that size themselves.

Added

  • Seat an object against a wall, not through it. Pivot Adjustment now offers all six faces – Left, Right, Front and Back alongside Top, Center and Bottom. Back hangs a model flat against an upright surface the way Bottom stands one on a floor. Without it a solid object placed on a wall sits on its own centre, so half of it ends up inside the wall.

  • Choose where a scene starts. A new Placement section in Scene Settings decides how a scene finds its place in the real world: the viewer places it, the experience places it automatically, or it's anchored to a printed marker. Pick the surface it targets – a horizontal one for floors and tables, a vertical one for walls – and narrow that to a kind of surface if you want a scene that only ever appears on a table, or only on a wall. Existing experiences keep behaving exactly as they did: the viewer places them on the floor. Placement moves the scene and turns it to face the surface, never tilting it, so what you compose standing upright arrives standing upright, on a wall as on a floor.

  • Tell an experience how much room it needs. Automatic placement takes a minimum size in metres, so a scene won't land on a surface too small to hold it, and won't sit so close to the edge of a table that it hangs off. On the floor it sets how far ahead of the viewer the scene starts.

  • Markers as a placement method. A printed image that anchors the whole scene is now one of the placement methods rather than a separate setting, so it's clear which one is establishing the scene's position.

  • Choose how a location-based experience localizes. Geo experiences can now be set to Marker-Based or Manual instead of automatic visual positioning – for places the map data doesn't reach, or indoors.

  • A way out of a marker hunt. A viewer who doesn't have the marker with them can tap Place Manually – or Localize Manually in a location-based experience – and position the scene themselves, instead of waiting for a marker that isn't coming.

  • Hide and show from the context menu. Right-click or long-press an object or its content to hide it while you work. Previously this was only reachable by hovering the row, which meant it couldn't be reached at all on iPad.

  • Turn off the placement confirmation. The brief message shown once a scene has its place can be switched off in Scene Settings, for an experience that should begin without interruption.

  • Hide the pause and capture controls per scene. Two new switches in Scene Settings › General. Pause controls covers every platform at once: the button in the top left corner on iPhone, iPad and Mac, the one on your hands on Apple Vision Pro. Turn the capture button off for scenes where taking a photo would give viewers the wrong idea about what the experience does. The pause menu is the only way to leave an experience, so if you hide it, give viewers another route in with the Pause Experience action.

  • Objects are named when you create them. A new object arrives as "Object 1", "Object 2" and so on – a real name you can see in the inspector, rename, and use from a script straight away. Previously the hierarchy showed a label that was only a stand-in: the Name field looked empty, and scene.findEntity({ name: 'Object 1' }) found nothing. Names also stay put now, where the old labels renumbered themselves whenever you reordered the scene. Objects in existing experiences are left exactly as they are.

  • Copy Name – right-click an object or its content to copy its name, ready to paste into a script. It stays visible but dimmed when nothing has been named yet.

  • Lights. Add a light the way you add anything else, from the Add menu: a spot for a cone of light you aim, a point light that glows in every direction, or a directional light that acts as the sun. Each has its own colour, brightness, reach and falloff, and you place and aim it with the usual gizmo. Spot and directional lights can cast shadows, with a choice of hard or soft edges, and a spot can project an image through its cone so it throws a pattern rather than a plain circle. Soft edges, projected images and the shadow-detail setting need iOS 27, iPadOS 27, macOS 27 or visionOS 27; below that the light still works and simply casts a hard-edged shadow.

  • Built-in Dynamic Light. Every scene has always had a light of its own, and it now has a switch, in Scene Settings under Lighting & Rendering. In AR it only casts the shadows objects drop; with the camera off it also brightens them, on top of the scene's environment lighting. Turn it off when you want only the lights you placed.

  • Lights from a script. createSpotLight, createPointLight and createDirectionalLight build lights at runtime, and entity.representation.light changes one while the scene is running, so a lamp can pulse or a projected pattern can turn. scene.setBloom and scene.setToneMapping set the scene's look from a script too. Scripting runtime 0.3.0; see the scripting changelog.

  • Bloom. Bright things now bleed light into what's around them – a soft halo on emissive materials, screens and light sources. Find it in Scene Settings under Post-processing. By default only objects you mark bloom, which you do with the new Bloom switch in an object's Lighting & Shadows section; switch it to Whole Scene if bright areas can appear anywhere, bearing in mind it costs more. Strength, threshold and blur radius are yours to tune. Bloom needs iOS 27, iPadOS 27, macOS 27 or visionOS 27, which are still in beta – until those ship publicly you'll only see it on a device running the beta, and it also needs an iPhone 12, an A14 or M-series iPad, an Apple silicon Mac, or Apple Vision Pro. Everywhere else the scene renders normally, so an experience using bloom still opens and plays for everyone. On Apple Vision Pro it appears in an immersive space only.

  • Say which OS version an experience needs. A new Minimum OS Version setting sits under Platforms in Experience Settings. Leave it unrestricted, or require version 26 or newer, and viewers on anything older are told the experience is unavailable rather than opening it and finding parts of it missing. One setting covers iOS, macOS and visionOS. Gaussian splats need version 27, so a scene containing one now says so beside the setting, explains that on older systems the splat will not appear, and offers to set the requirement in one tap.

Fixed

  • Hiding the content inside an object works. The eye button on an object's own row hid it, but the same button on the model, media or interface row nested inside it did nothing. Both rows now behave the same way, as they already did for content inside a container or a portal.
  • Typing a large number into a field no longer changes it. In a locale that separates thousands with a period, 1000 was shown as "1.000" and then read back as 1 when committed, so a light set to a plausible intensity ended up at almost nothing. Numbers are no longer grouped while being edited, so what a field shows is what it reads back.
  • A scene that needs a particular surface can no longer wait forever for it. Once the kind of surface an experience asked for had been seen even briefly, it was insisted on for the rest of the run, so if the device stopped recognizing that surface the experience never started. It now gives the surface a few seconds to come back and otherwise places the scene anyway.
  • The floor is found before the scene is placed, not after. A scene set to appear on a table or a seat had its floor located afterwards, so the viewer was sent looking for a second surface once the scene had already appeared, which read as the placement going wrong. The floor step also declines to settle on a table or a chair now, rather than accepting whichever surface happened to be in view.
  • The placement indicator no longer hangs around during the experience. A scene placed on a table leaves the floor still to be found, and the floor search asks for an indicator of its own. The one used for placement was left in the scene at that point rather than taken down, so it sat in mid-air for the rest of the session.
  • An object's Minimum Dimensions works on walls again. A plane anchor with a required size stopped honouring it on vertical surfaces, and on floors, in an earlier 1.1.21 build: the element search had been pointed at the equivalent check scene placement uses, which deliberately only applies to tables. Content anchored to a wall now waits for a wall big enough, as it did before and as the documentation describes.
  • A scene set to Window or Door can be placed again. Whether a device recognizes a door as a door turns out to depend on the door: a plain flush one in a plain wall is reported as part of that wall, and iPhone and iPad have no separate door classification at all. So a scene asking for one waited for a surface that never arrived and the placement indicator never settled. Both choices now accept the wall behind them, with a real door still preferred on Apple Vision Pro where the room reports one.
  • "Place Manually" starts from the floor. Stepping out of a marker hunt used to hand the viewer whichever surface the author last had selected in a different placement method, so they could be asked to aim at a wall for a scene that had nothing to do with one.
  • Scripted value animations are smooth again. They were driven by a clock separate from the one the scene renders on, which on Mac ran at a third of the frame rate and made anything animated from a script visibly coarse. They now advance once per rendered frame, start from their first value rather than a frame or two along, and pause with the experience instead of jumping ahead when it resumes.
  • Automatic placement no longer settles for the wrong spot. It waits for the kind of surface the experience asked for as long as one is in the room, rather than giving up after a few seconds and using whatever the viewer happened to be looking at. It also waits for the viewer to settle before committing, so glancing past the edge of a table no longer places the scene there.
  • A scene on a wall is no longer placed at the viewer's feet. Looking at the bottom of a wall used to put content half into the floor; wall placements now sit at the viewer's own height.
  • Turning off auto-start didn't survive saving. The setting was written correctly but read back from the wrong place, so it reverted every time the experience was reopened.
  • Interface panels on Apple Vision Pro would not respond to input. A panel whose object had a tap event or a gesture highlighted as a whole when you looked at it, and its buttons received no taps at all – the controls were effectively dead. Looking at a control now highlights that control, and taps reach it.
  • A panel's corner radius was ignored on Apple Vision Pro. Whatever radius you set, every panel rendered with the same rounding. Panels now take the radius you give them.
  • Text no longer truncates when a panel sizes itself to its content. A label filled in later – from a variable, a script or fetched data – was cut off with an ellipsis because the panel had already measured itself around the placeholder. Automatically sized panels now grow to fit. The previous advice to give such panels a fixed size is no longer necessary.
  • Sound kept playing after you left an experience. Leaving while a sound was still playing did not stop it – it carried on to the end of the clip. Opening several experiences in one session could then slow the app down or leave it on a frozen frame. Leaving an experience now stops it straight away.
  • An experience made from a template keeps its scripts. Starting from a template whose original used scripting produced an experience where every Run Script action pointed at a script that was not there, so nothing ran. Scripts are stored alongside an experience rather than inside it, and only the document was being copied.
  • The keyboard works in the Create Experience screens on Mac. Return did nothing and the Mac played its error sound, the arrow keys did not move the selection, and Escape did not cancel. All three now behave, and the category list keeps its own arrow key navigation.
  • A save that was replaced by a newer one no longer reports itself as a failure. Editing quickly could raise a red "Experience saving error" over the editor even though nothing had gone wrong and the work was saved a moment later.

1.1.20 – July 2026

Spatial user interfaces, Apple Immersive Video on Apple Vision Pro, direct screen gestures, and a much larger scripting runtime.

Added

  • Spatial user interfaces – build interface panels and place them in a scene or fix them to the screen. Labels, buttons, toggles, sliders, text fields, images, shapes, stacks and web views, with a style system covering fonts, colours, borders, shadows, corner radii and frosted glass panel materials. Styles can differ per state, so a button can look different while pressed or disabled. Labels interpolate scene variables live – write ${score} and it updates itself – with formatting filters for percentages, times and signed numbers. Panels are built in a dedicated editor with its own inspector, undo and preview.
  • Apple Immersive Video – play Apple Immersive Video and spatial media on Apple Vision Pro. Objects and interface panels stay visible over a fully immersive video, and the new Set Immersion Mode action moves an experience between mixed and full immersion while it runs. On iPhone and iPad the camera stays visible while placing a virtual-immersion experience.
  • Screen gestures – pan, pinch and rotate anywhere on screen, plus double tap and long press on an object, on iPhone, iPad and Mac. A new On Gesture trigger fires through the drag with its phase and movement, so an object can react while it is being moved rather than only at the end.
  • Throw and momentum – objects with a drag gesture can now keep the motion they were released with. Choose whether an object stays where it was dropped, springs back, or carries its momentum so a flick throws it.
  • Per-device anchoring – give an object a different anchor per device category, so one experience can anchor to a plane on iPhone, to the screen on Mac and to a hand on Apple Vision Pro. Includes a screen-space anchor, an option to hide an object entirely on a given device, and a fallback transform with its own gizmo for devices without tracking.
  • Copy and paste in the editor – copy objects and their visual content and paste them elsewhere in the same experience, including pasting as a sibling or wrapping into a container. Container rows gained an Insert submenu, and dragging across the hierarchy keeps the selection.
  • Cycle action – one trigger steps through any number of states, animations or behaviours, so a single tap can advance a sequence rather than always doing the same thing.
  • Platform condition – Conditional Logic can branch on the device an experience is running on, so one experience can behave differently on Apple Vision Pro than on a phone.
  • Scripting 0.2.0 Beta – a large, mostly additive runtime release: paths and splines, mesh instancing, GPU compute kernels, runtime meshes, device location, screen gestures, physics primitives, object cloning, hand and face tracking, inline materials, and script-built interface panels. See the scripting changelog for the full list.
  • Ask what the device can do, not just what it is. The Conditional Logic action gained two questions beside Platform Is. Device Is asks whether this is a handheld, a headset or a desktop, the same vocabulary the anchor Device Configuration picker uses, so it keeps working as new devices arrive. Feature Is Supported asks whether a capability is actually available here, which nothing else could answer: bloom needs a recent OS, capable hardware, and on Apple Vision Pro an immersive space. Put the fallback in the else branch.
  • Documentationhttps://scenery.app/docs/ is new: a written guide to the editor, anchors, triggers, actions, materials, post-processing and the scripting API.

Changed

  • The Add submenu on containers is now called Insert, which better describes what it does.
  • Drag, Rotate and Resize no longer show a "Vision Pro only" badge. They have always worked on every platform – the input adapts to the device – and the badge was simply wrong.

Fixed

  • macOS 27 compatibility – the app would not launch at all on macOS 27, and the editor sidebars would not scroll. Both are fixed.
  • Discover no longer shows "An error occurred" and an empty feed when a single experience cannot be read. One unreadable experience is now skipped instead of emptying the whole list.
  • An experience created with a newer version of Scenery no longer disappears from your library. It stays in place and explains that the app needs updating to open it – nothing was ever lost, but it looked exactly as if it had been.
  • Rotation no longer flips onto a different axis after using the rotate gizmo.
  • Moving several selected objects at once now moves them together, in the direction you dragged.
  • The add-object menu is no longer empty on Macs running macOS 15 and earlier.
  • Replacing an asset keeps it in its folder, and the asset library search field survives switching tabs.
  • Duplicating an experience now gives you your own copy rather than one still tied to the original.
  • The first tap on an object is no longer occasionally swallowed.
  • Preview sessions no longer leak, and placing an object in a non-tracked scene no longer crashes.

1.1.19 – April 2026

  • Folders – organise assets and experiences into folders, and drag items to file them.
  • SharePlay – view experiences together over FaceTime, with interactions and events kept in sync.
  • Volume mode – launch experiences in a volume on Apple Vision Pro so they sit alongside other apps and windows.

Changes before 1.1.19 are not covered by this changelog.