๐ Improvements
Furniture data layers are automatically re-rendered when new furniture is added.
๐ Bug fixes
We've fixed an edge-case with our spaces search that could result in some spaces not appearing in the list.
The first release of 2025 is in, and after 3 months of work, it's MASSIVE! We're introducing a fully reworked experience to the platform, an experience that:
is building centric
gives you access to all your information and data about a space in a single page
streamlines navigation between all facets of the space
consolidates all editing capabilities, from layout to data, in one "toolbox"
integrates reports as an integral part of the platform
introduces location and our map based experience for all users
maintains the viewer across pages for a snappy experience โก
๐ New features
The space list has been improved, search is more powerful, and sorting is now possible.
The space profile shows all information about the space at a glance.
We've got a new "share & embed" modal that unifies all actions to be taken to get your spaces into the world.
Spaces now come with tags, letting you organize them, filter them, search them, in any way you can imagine.
The new space settings page makes it easy to set the image preview of a space or download screenshots of any size.
The space location can be set directly in the app through a no-training, 3-step geo-referencing workflow we think you'll find both accessible and powerful.
Scale correction is now possible when positioning the space on the map.
We use reverse geocoding to extract the space address automatically from the location.
OSM buildings are now automatically removed from the map viewer when rendering a Smplrspace building.
You can now control the decimal precision in the GeoJSON conversion to reduce the size of data.
You can now create a new space programmatically using smplr.js. See the docs.
You can now get a list of your spaces via smplr.js. See the docs.
We've added an option to not render the grid in the editor. This can help for complex floor plans to limit the visual load. It can also be helpful to improve the performance of the editor on lower end computers.
You can now pass a container instead of a container ID when starting the viewer, improving compatibility with web components frameworks and other shadow DOM based technologies. See the docs.
You can now provide a callback called each time new equipment is loaded in the viewer. See the docs.
The map viewer has a few new APIs to change a map style (docs), display buildings footprint (docs), and control the camera animation when flying to a space (docs).
๐ Improvements
The url schema has been overhauled to support the new experience and old urls are redirecting to the new places.
We've done a bit of grooming on our design system, resulting in nifty improvements to components and micro-interactions.
We're improved the look and feel of the editor with a new dotted grid, a scale, a refreshed toolbar and a redesigned left pane (this one was very much overdue). This brings the editor in line with the evolution of our design language, and makes it look more modern and polished.
We've reviewed and updated the vocabulary used across the app to match better how our growing user base thinks about the different facets of a building, and to align with where we want to take the platform in the months to come. In particular, "furniture" becomes "equipment", and "assets" become "entities". Refreshed icons also support the change.
๐ Bug fixes
We've fixed a few errors in our GeoJSON conversion, making rendering of spaces on the map more predictable.
We've fixed an issue where the editor would wrongly warn against unsaved changes if the user tried to leave right after publishing.
๐งโ๐ป Developer experience
Our new Smplrspace IDs (SIDs) are used across the platform for spaces and reports, shortening urls dramatically. You can learn more about the new IDs in this guide of the docs, and plan ahead for the deprecation of the old IDs.
This release brings a bunch of new capabilities to the map viewer, and we're just getting started. The goal over the coming months is to have the map viewer be close to on par with the space viewer (3D), sans furniture for now.
๐ New features
The map viewer's level of details (LOD) increased from floor footprints, to indoor spaces with walls, doors, windows.
We've gone through color design for the map viewer, it's starting to look shinny.
We're bringing our beloved render options to the map viewer, so you can now choose how you want the building rendered: as a stack of colored floors footprints, in full details, and more options are on the way. More details in the docs.
We've added our space viewer's
get/setCameraPlacement
APIs to the map viewer. More details in the docs.We've added programmatic navigation of the levels to the map viewer, with the exact same APIs as the space viewer. More details in the docs.
๐ Improvements
We're starting to change our color palette in preparation for an upcoming redesign.
๐ Bug fixes
We've fixed an issue where corner windows would sometimes not be rendered in 2D mode.
We've fixed an issue where the camera angle would not be reset when switching from 3D to 2D mode.
We've fixed an issue where the range filter's slider in reports could sometimes reset to the wrong values when changing the selected statistic.
A.K.A. ๐ The Halloween release, nothing too scary though.
๐ Improvements
The floor plan can now be rotated to a specific angle in 2D by setting
cameraPlacement.alpha
when callingstartViewer
.The initial camera placement passed in through
startViewer
can now be a partial object, to just set the angle of view for example, while leaving the rest to be automatic.The viewer's recenter button now uses the initial camera placement, if any was provided.
We've fixed an issue where the camera would not center in the editor sometimes.
โ๏ธ Groundwork (and nerdy)
We're working on new Stripe-inspired IDs that will be developer-friendly and shorten the URLs. This release backfills them, stay tuned ;).
๐ Improvements
The displayed width of stats with aggregates can now be controlled in reports, to support logical grouping.
Long names are better handled in the level explorer report template.
๐ Bug fixes
We've fixed an issue introduced in the previous release where spaces with shell parts would not render.
๐ New features
You can now programmatically take a screenshot of the viewer, with or without its UI overlays. There are 2 options for it: download the file to the user's file system (docs), or get the image encoded as Base64 string that you can manipulate or upload to any location you want (docs).
The map viewer now supports indoor space rendering with volumetric walls and semi-transparent windows.
We've added drop-in search to the map viewer, set the option to true to get global address and POI search, plus GPS coordinates search in almost any format.
The reports can now be configured to use any of the viewer's render options.
๐ Improvements
We've improved the type-specific
addDataLayer
APIs introduced in the previous release so you don't need to provide the type twice ๐.You can now set zero to be treated as "no data" when using the
weightedArea
statistic in reports.You can now configure items to be ignored in the reports' leaderboard.
๐ Bug fixes
We've fixed the
weightedArea
statistic for datasets with missing values.
๐ New features
The new features in this release are all about developer experience for our fellow Typescript devs! ๐ฉโ๐ป
We now expose many types that are frequently useful in userland at the root of the
smplr-loader
NPM package. Reach out to support if there are more that you need and are not yet exposed.We have added type-specific variants of the
addDataLayer
API (e.g.addHeatmapDataLayer
) to make it easy to force the type inference towards a specific type of data layer: point, polygon, etc. More in the docs.
๐ Improvements
The area calculation API now handles polygons with holes.
Polygons with holes are now draggable.
๐ Bug fixes
We've fixed an issue that caused the argument of the onResize handler to be undefined.
We've fixed an issue with the topShownLevel option not working in 2D mode.
๐ Bug fixes
We forgot to expose the new legend components through smplr.js in the previous release ๐. It is now fixed.
We've fixed an error in the vanilla JS function to draw the new swatches.
๐ New features
You can now dynamically show/hide the level picker and the navigation button, without having to restart the viewer. See the new functions in the docs.
Using that new capability, reports now hide the level picker when a level is selected in the level filter.
There are 2 new legend components: color swatches for your categorical color scales, and icon swatches for your icon layers. See the docs for details.
You can now configure a legend on your data layers and it will be rendered in a collapsible overlay on the viewer itself. See the docs for details.
The position of the legend on the viewer can be configured as well. See the docs for details.
We've added support for automated legend in reports, using the fresh new legend-ary ๐ฌ capabilities .
You can now add a templated title overlay on the viewer in the reports, giving you a summary of the data you're looking at, and making screenshots more informative as well.
๐ Improvements
We've improved the design of the legend component as well as the position of its labels