
Research
/Security News
Mini Shai-Hulud Campaign Hits Red Hat Cloud Services npm Packages
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.
@jabraf/use-gmaps
Advanced tools
React hook to use Google Maps in your React apps
Install with npm
npm install @jabraf/use-gmaps
Install with yarn
yarn add @jabraf/use-gmaps
This custom hook uses @googlemaps/js-api-loader to setup the map. More info at https://github.com/googlemaps/js-api-loader
Get Google Maps API key - More info https://developers.google.com/maps/documentation/javascript/get-api-key
Use the custom hook in your React app:
import React from 'react';
import useGoogleMaps from '@jabraf/use-gmaps';
export default function App() {
const { mapRef } = useGoogleMaps({ apiKey: 'ABC-XYZ' });
return <div ref={mapRef} style={{ width: '100vw', height: '100vh' }} />;
}
If you are using Create React App (CRA) then you can also pass the key from environment variables (e.g. process.env.REACT_APP_GMAPS_API_KEY)
Another example to add a marker:
import React from 'react';
import useGoogleMaps from '@jabraf/use-gmaps';
const { mapRef, map, isMapLoaded, currentCenter } = useGoogleMaps({
apiKey: 'ABC-XYZ'
});
export default function App() {
React.useEffect(() => {
if (isMapLoaded) {
// Just use native Google Maps API methods
new window.google.maps.Marker({
map,
position: currentCenter,
title: 'I am a marker'
});
}
}, [isMapLoaded, map]);
return <div ref={mapRef} style={{ width: '100vw', height: '100vh' }} />;
}
Here are other options that can be passed to the custom hook:
librariesLoad additional libraries by specifying a libraries option.
...
const { map } = useGoogleMaps({
libraries: ['places']
});
More information at https://developers.google.com/maps/documentation/javascript/libraries
versionSet a version for Google Maps API. Default to weekly
...
const { map } = useGoogleMaps({
version: 'weekly'
});
More information at https://developers.google.com/maps/documentation/javascript/versions
mapOptionsSet and override default options for the Map
...
const { map } = useGoogleMaps({
mapOptions: {
center: { lat:123,lng:456 },
zoom: 18,
styles: [{ ... }]
...
}
});
More information at https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions
This custom hook API provides access to followings:
mapRefThe React ref reference that can be attached to any HTML element in the React app.
mapThe native Google Maps Map object for currently loaded map.
isMapLoadedtrue or false providing current state of loading map.
errorsAny errors from @googlemaps/js-api-loader while loading the map.
currentCenterCurrent location object e.g. { lat: 123, lng: 456 }
The value will update with map drag.
Run following commands to setup and start the test project using Create React App.
npm install
npm run setup
npm start
Demo CodeSandbox - https://codesandbox.io/p/sandbox/dqlp2x
MIT License
© 2020–present Jabran Rafique
FAQs
React hook for using Google Maps in React apps.
The npm package @jabraf/use-gmaps receives a total of 22 weekly downloads. As such, @jabraf/use-gmaps popularity was classified as not popular.
We found that @jabraf/use-gmaps demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.

Research
/Security News
The North Korean malware loader hides in a Packagist-listed package and its GitHub branch to fetch and execute remote code in a likely Contagious Interview-style lure.

Security News
The Rust project is moving toward formal rules on LLM use in contributions after months of internal debate over maintainer burden, code quality, and contributor experience.