Frameworks

The examples are framework-free on purpose: plain TypeScript that runs anywhere. These pages are the other half, the parts that are only true of one framework. Where the client boundary goes, which file needs "use client", how the key reaches the browser, and what breaks when a renderer meets server-side rendering.

Every recipe shows both ways in. The registry path copies a component into your project, where you own the file and it follows your design tokens. The package path installs a hook or composable, which is the right layer when the map goes inside UI you have already built. The tabs remember which one you picked, across every page here.

Recipes

Add a map to Next.js
Next.js
A map in an App Router page, with the client boundary already handled.
Open
Add a map to React
React
A map in a Vite React app, as a copied component or a hook.
Open
Add a place search box to React
React
Debounced address autocomplete that moves the map, as a copied component or a hook.
Open
Add directions to React
React
Route between two places and draw the line, as a copied panel or a hook.
Open
Add a map to Vue
Vue
A map in a Vue 3 app, as a copied component or a composable.
Open
Add address autocomplete to Vue
Vue
Suggest Canadian addresses as someone types, as a copied component or a composable.
Open
Add a map to Nuxt
Nuxt
A map in a Nuxt 3 app, with the key on runtime config and the renderer kept off the server.
Open

How the code here is checked

Every TypeScript, TSX and Vue snippet on these pages is compiled against the real package types, so a renamed option fails a test rather than quietly rotting on the page. That covers the imports, the hook and composable calls, and the props of the React components.

Two things it does not cover, and you should know which is which. Vue templates need the Vue language service rather than the TypeScript compiler, so a typo in a :prop binding reaches you instead of a test. And Nuxt's own auto-imported built-ins are stubbed locally, though the shape unmap puts on runtime config is checked against the module itself.