Welcome to 2026, and let's start the year with a first release ✨.
🎉 New features
You can now enable optional scroll protection in both viewers. When users scroll without holding cmd/ctrl, we prevent accidental zooms so you can implement cooperative gestures in scrollable layouts more easily. Learn more in the docs. And shout-out to our friends at Akenza for the inspiration ✌️.

Space JSON export is now available to all users: export from the space profile’s settings and re-import from the editor’s advanced tab.
We’ve upgraded the armchair, 2‑seater and 3‑seater sofas to parametric equipment that loads instantly, works in both 2D and 3D, and can be stretched to any length and configured to a precise seat count.
We’ve built an automation to upgrade existing spaces to the new parametric sofas—reach out at support@smplrspace.com if you’d like us to run it for you. 🤖
smplr.jsnow exposes aUtilsnamespace with helpers likeSpaceSidandisSpaceSid, making it easier to validate and work with Smplrspace IDs in your own code. More details are available in the docs.
💅 Improvements
The space viewer now uses a dedicated default
renderingMessage, making it clearer when a space is still rendering versus loading—especially in embedded and progressively rendered viewers.
🐛 Bug fixes
We’ve tightened up viewer loading states across the app so loading feedback is more consistent.
We’ve fixed an issue where some map-based projects could open at the location of the previously opened project instead of the current one.
We've fixed an issue where the furniture data layer sometimes failed to initialize when using the default color.
We’ve resolved a rare issue where hover interactions on furniture stopped working after switching the viewer from 2D to 3D.
We’ve improved the loader logic for progressive rendering in the space viewer, so loading messages behave more reliably.
We’ve fixed an issue where the set of included levels could reset unexpectedly when toggling between 2D and 3D modes.