Skip to Content
What's new

What’s new

This page lists the changes that affect integrators in each stable release of @mapvx/web-components-ssr, newest first. The 0.x versions were published as @mapvx/website-component: see Migrating from 0.x.

Across every 1.x release, the <mapvx-website> tag, the names and default values of its attributes, its two events (userAction and cardSelected) and their payloads, and the initial-data format stayed the same. Changes in behavior are listed under each release.

Upgrading from 1.2.x or earlier? 1.3.0 changed how main.js must be loaded. Pages that load it with a classic <script> tag stop rendering the component.

Release channels

# Stable release (npm "latest" tag), pinned to the exact version npm install --save-exact @mapvx/web-components-ssr@1.6.1 # Prerelease (npm "dev" tag), for testing only npm install @mapvx/web-components-ssr@dev # Show the current tags and every published version npm view @mapvx/web-components-ssr dist-tags npm view @mapvx/web-components-ssr versions
npm tagWhat it points toUse it for
latestThe newest stable release (1.6.1).Production, with a pinned version
devPrereleases with a -dev.N suffix, such as 1.6.1-dev.1. It can point to a version older than latest.Trying changes before a stable release
rc1.0.0-rc.1, a release candidate from before 1.0.0. The tag has not moved since.Nothing

Pin the exact version you tested, on npm and in CDN URLs (@1.6.1, not @latest). The chunk file names that main.js loads can change from one release to the next, and jsDelivr lets browsers cache @latest for up to 7 days, so a floating version can pair an old main.js with files from a newer release.

The full list of versions is on the npm versions page . The SSR helper, @mapvx/web-components-ssr-helpers, is versioned separately; its current version is 0.1.1.

1.6.1

Released 2026-08-17.

Fixes

  • The building that a hub or mall map enters is no longer listed as a place inside itself in the grid, the search results or the route origin and destination pickers. A ?destination=<building id> deep link still opens the route screen for it (Deep links).
  • Routes inside a building no longer remove the building’s indoor floor plan from the map while the route animates.

1.6.0

Released 2026-08-15.

Features

  • The visitor’s Grid View or Map View choice now survives page reloads. It is saved in localStorage under the key mapvx:active-view (value grid or map) each time the visitor toggles the view. Storage errors, for example in private browsing, are ignored.

Breaking or action required

  • Behavior change: a saved choice takes precedence over the default-to-map attribute, which now only decides the first view for visitors who have never toggled it. The key is per origin, so it applies to every <mapvx-website> and every institution on your site. If a page must always open in the view that default-to-map sets, remove the key before the bundle loads. This also discards returning visitors’ choice. See Remembered view.
<script> try { localStorage.removeItem('mapvx:active-view') } catch (e) {} </script> <script type="module" src="https://unpkg.com/@mapvx/web-components-ssr@1.6.1/dist/browser/main.js"></script> <mapvx-website api-key="YOUR_API_KEY" institution-id="YOUR_INSTITUTION_ID" default-to-map="true"></mapvx-website>

1.5.4

Released 2026-08-15.

Fixes

  • Fixes a blank map on the first Map View load inside server-rendered hosts such as Next.js or Angular SSR, where the map container measured 0 px when the map was created. The map now resizes as soon as its container gets real dimensions, and the map element fills the height of the component’s map area. See The map stays blank.

1.5.3

Released 2026-08-15.

Fixes

  • Removes an Uncaught (in promise) Error: Map not created that versions 1.4.1 to 1.5.2 could print to your page’s console, and report to your own error tracking, when the component entered a building before the map had been created. A later attempt for the same building now also loads its floor plan correctly.

1.5.2

Released 2026-08-15.

Fixes

  • The first Map View load no longer shows the outdoor base map without the building’s floor plan until the visitor navigates away and back. The home screen now waits for the floor plan before setting the floor and the camera.

1.5.1

Released 2026-08-15.

Fixes

  • The accessible restroom and elevator icons added in 1.5.0 now appear. They are matched to the restroom and Entrance Elevator categories.

1.5.0

Released 2026-08-14.

Features

  • New icons on map markers and place profiles for the categories “Parking pay station”, “Accessible entrance”, accessible restrooms and elevators. In 1.5.0 the restroom and elevator icons fell back to the default icon; 1.5.1 fixes them.
  • The bundled Angular is updated to 22.1.2.

1.4.1

Released 2026-08-14.

Fixes

  • Indoor maps render again. Entering a building now loads its floor plan; before, the map kept the outdoor style or the previous building’s style, a problem present since 0.13.4. A route now waits for the floor plan to finish loading, so the floor plan change can no longer erase the route, and the place profile shows the floors of the right building.
  • The category tab bar is hidden when “All” is its only entry.

1.4.0

Released 2026-08-13.

Features

  • The “Start Route” button on the route screen now works. It starts a step-by-step route with a “Next step” control on the map, and a banner above the route details shows the current step’s instruction.
  • The route info panel shows the floors the route passes through, for example “Level 1 → Level 3”, plus “Elevator” when every floor change is an elevator ride.
  • TypeScript: the AnimationState enum gains Stepping = 4. It is the last member, so the existing values (NotStarted = 0 to Finished = 3) keep their numbers. See Other models.

Fixes

  • Floors are labeled “Level N” from the floor’s level number instead of the untranslated name from the content system (such as “Piso”). The floor selector is hidden in buildings with a single floor.
  • Changing the route origin removes the previously drawn route, and a slow earlier route request can no longer draw over the current one.

1.3.0 (action required)

Released 2026-08-13.

1.3.0 was published as a minor version, but it changes how the bundle loads. Before upgrading from 1.2.x or earlier, load main.js as a module, serve the new chunk files and check CORS, as described below.

Breaking or action required

  • main.js is now an ES module. Load it with <script type="module">. As a classic script (with or without defer, as earlier docs showed), parsing fails (Chromium reports SyntaxError: Unexpected token 'export'; other browsers word it differently), the element is never defined and stays empty, and no other error appears. Module scripts are deferred automatically, so defer is no longer needed. See Unexpected token ‘export’.
<!-- 1.2.x and earlier --> <script src="/mapvx-website/main.js" defer></script> <!-- 1.3.0 and later --> <script type="module" src="/mapvx-website/main.js"></script>
  • The package now publishes chunk-*.js files next to main.js, and main.js loads them on demand by relative path. If you self-host the files, copy every .js file from dist/browser plus styles.css into one directory and keep the original file names, main.js included: each chunk imports ./main.js by that name. Chunk names are content hashes that change whenever the chunk’s code changes (all of them changed in 1.5.0, for example), so replace the whole folder on each upgrade instead of overwriting only main.js. See Self-hosting and Chunk files return 404.
rm -rf public/mapvx-website mkdir -p public/mapvx-website cp node_modules/@mapvx/web-components-ssr/dist/browser/*.js node_modules/@mapvx/web-components-ssr/dist/browser/styles.css public/mapvx-website/
  • Browsers fetch module scripts in CORS mode. If main.js and its chunks are served from a different origin than your page (your own CDN, for example), that origin must send an Access-Control-Allow-Origin header. unpkg and jsDelivr already do.
  • The bundled maps SDK now reports its own errors to https://sentry.mapvx.app, without touching your page’s window.onerror, and no longer contacts Countly (countly.lazarillo.app) or Rollbar (api.rollbar.com). If your Content-Security-Policy restricts connect-src, allow https://sentry.mapvx.app. See Error reporting and Allowlist policy.

Features

  • The city filter is grouped by each institution’s city, so a hub or mall inside a city no longer appears as a separate city. When institution-id names an institution that reports a city (a hub or mall), only that city is offered; a city-level institution keeps every city. The city control is hidden when fewer than two cities remain; before 1.3.0 it showed with a single city.
  • Category buttons that would lead to an empty grid are hidden. A category is kept only if at least one of its places is a public place returned for your API key, within the selected city option when the city filter is on. “All” is always kept.
  • TypeScript: Institution and InstitutionResponse gain an optional city field. See Maps SDK types.
  • The bundled maps SDK is updated to @mapvx/web-js 3.1.0.

Fixes

  • The initial grid and search follow institution-id: they are scoped to the city option that matches it (by institution id, then by filter id). Before, they always started on the first city in the configuration, and only the category filters followed institution-id. If no option matches, the first option is used. Changing institution-id after load now also re-scopes the city filter and the grid; a city the visitor picked by hand is kept until the attribute changes again. See institution-id.
  • The map enters or leaves a building’s indoor view whenever the selected city option changes, including through an institution-id change. Before, only a click in the city dropdown did it.

If the city dropdown or some category buttons disappeared after upgrading, the rules above are the likely cause: see show-city-filter, show-category-filters and No category tabs, or the wrong city.

1.2.0

Released 2026-07-21.

Features

  • A place with no photos now shows its logo as its image, on the grid card and on the profile. The order is: first photo, then logo, then the generic placeholder image.

1.1.1

Released 2026-07-09.

Fixes

  • Fixes an empty place list after switching views. Map View shows fewer cards per page than Grid View, so it has more pages; going to a page that exists only in Map View and switching back to Grid View emptied the list. The current page is now limited to the last available page and kept in sync across both views.

1.1.0

Released 2026-07-09.

Features

  • The request that loads the institution list from the MapVX API is retried up to 3 times after the first attempt, waiting 1 s, 2 s and 3 s, so a brief network error no longer leaves the institution list empty. The retry applies only to this request.

Fixes

  • Changing the institution-id attribute at runtime now waits until the institution list has loaded, from initial-data or from the API, instead of racing it.

1.0.1

Released 2026-07-08.

Fixes

  • iOS Safari: the component no longer treats the motion and orientation permission as granted before the visitor answers the prompt, so the compass heading of the location marker now depends on the visitor’s answer. See Browser permissions.
  • The bundled maps SDK is updated to @mapvx/web-js 1.4.0.

1.0.0

Released 2026-07-03.

First stable release under the name @mapvx/web-components-ssr. It keeps the tag, attributes, events and initial-data format of @mapvx/website-component 0.16.4.

Features

  • TypeScript declarations ship with the package (dist/types/public-api.d.ts), with the maps SDK’s data types included, so you do not need to install @mapvx/web-js. Import them with import type only: main.js exports no runtime API. See Types only.
  • The bundled maps SDK is now the public @mapvx/web-js package (1.2.1). As before, it is bundled inside main.js, so there is nothing extra to install.
  • The bundle is built with Angular 22 (22.0.1; 0.16.4 used Angular 20). Angular is bundled inside main.js, so your page does not need it.

Breaking or action required

These apply when you move from 0.x; the migration guide walks through them.

  • The package is renamed from @mapvx/website-component to @mapvx/web-components-ssr, and the helper from @mapvx/website-component-helpers to @mapvx/web-components-ssr-helpers.
  • Font Awesome’s base CSS now ships inside styles.css, so the icons, map markers included, keep their styles even when a Content-Security-Policy blocks inline styles. Load styles.css on every page that shows the component. The component’s own styles, and a copy of the Font Awesome CSS, are still injected as <style> elements; see Nonce for injected styles.
  • The maps SDK’s marker wrapper class changed from .lazarillo-marker to .mapvx-marker. Rename any CSS on your page that targets it.
  • The bundled maps SDK sends most of its MapVX API requests to https://public-api.mapvx.com; 0.16.4 sent them to https://api.mapvx.com, which 1.x still uses for routes. If your Content-Security-Policy restricts connect-src, allow both hosts (Allowlist policy).
  • package.json declares engines.node as ^22.22.3 || >=24.15.0. It matters only at install time; see Requirements.

Migrating from @mapvx/website-component 0.x

@mapvx/website-component stopped at 0.16.4; new releases are published only as @mapvx/web-components-ssr. The <mapvx-website> tag, the attributes, the userAction and cardSelected events and the initial-data format do not change, and place ids in events and deep links stay the same.

Replace both packages

npm uninstall @mapvx/website-component @mapvx/website-component-helpers npm install --save-exact @mapvx/web-components-ssr@1.6.1 @mapvx/web-components-ssr-helpers@0.1.1

The files inside the package keep the same paths (dist/browser/main.js and dist/browser/styles.css), so only the package name changes in imports, asset globs (for example an angular.json asset entry) and copy scripts.

// Before (0.x) import '@mapvx/website-component/dist/browser/styles.css' import { prepareInitialData } from '@mapvx/website-component-helpers' // After (1.x) import '@mapvx/web-components-ssr/dist/browser/styles.css' import { prepareInitialData } from '@mapvx/web-components-ssr-helpers'

The helper keeps the same API, prepareInitialData(apiKey), which resolves to a JSON string, and the same version number, 0.1.1. The renamed helper also fixes a crash: when the API answers with an error (for example an invalid or missing API key), it now returns null for that dataset instead of throwing a SyntaxError that could crash server-side rendering. initial-data produced by the old helper still works with 1.x. See The helper package.

Load main.js as a module

From 1.3.0 on, main.js must be loaded with type="module", every chunk-*.js file must sit next to it with its original name, and a cross-origin host must send CORS headers. Details and a copy script are in 1.3.0.

<!-- Before (0.x) --> <script src="/website-component/main.js" defer></script> <!-- After (1.3.0 and later) --> <script type="module" src="/website-component/main.js"></script>

If you load the component from a CDN, change the package name in the URL and pin the version:

<script type="module" src="https://unpkg.com/@mapvx/web-components-ssr@1.6.1/dist/browser/main.js"></script> <link rel="stylesheet" href="https://unpkg.com/@mapvx/web-components-ssr@1.6.1/dist/browser/styles.css" />

Load styles.css on every page

In 1.x Font Awesome’s base CSS lives in styles.css, next to the color and font settings and the map styles it already carried. Make sure every page that shows the component loads it. See Package contents.

Rename marker CSS overrides

The component does not use Shadow DOM, so CSS on your page can target its markers. The marker wrapper class changed in 1.0.0:

/* 0.x */ .lazarillo-marker:has(.selected) { z-index: 1; } /* 1.x */ .mapvx-marker:has(.selected) { z-index: 1; }

Update your Content-Security-Policy

If your policy restricts connect-src, allow https://public-api.mapvx.com, which the bundled maps SDK calls from 1.0.0 on, next to https://api.mapvx.com. From 1.3.0 on, also allow https://sentry.mapvx.app, where the SDK reports its errors; you can then remove countly.lazarillo.app and api.rollbar.com, which 1.3.0 and later no longer contact. The full list is in Allowlist policy.

Check your Node.js version

package.json declares engines.node as ^22.22.3 || >=24.15.0. On Node.js versions outside that range (for example 22.x before 22.22.3, 23.x, or 24.x before 24.15.0), npm prints an EBADENGINE warning and pnpm an Unsupported engine warning (both fail only with engine-strict); Yarn 1 fails unless you pass --ignore-engines. It has no effect in browsers. npm also installs the packages listed as dependencies (the Angular 22 packages, Font Awesome, ngx-google-analytics, rxjs and tslib), even though main.js already bundles them; 0.16.4 did the same with Angular 20.

Last updated on