Collection of React hooks to interact with Miro Platform WebSDK.
Add a bit of ✨reactivity✨ to your Miro app.
$ npm install @mirohq/websdk-react-hooks
// or
$ yarn add @mirohq/websdk-react-hooks
Wrap your components with MiroProvider and inject the global instance of Miro WebSDK.
import { MiroProvider } from "@mirohq/websdk-react-hooks";
const App: React.FC = ({ children }) => <MiroProvider>{children}</MiroProvider>;
/*
You can also optional inject the global Miro WebSDK instance
const App: React.FC = ({ children }) => <MiroProvider miro={window.miro}>{children}</MiroProvider>;
*/
Make sure you have a Miro application configured to use it. The hooks in this library will only work within Miro boards and in a well-configured app.
The Miro WebSDK is NOT isomorphic, meaning that you cannot use it in both server and client environments. This also applies to this library, it won't work wehn you are rendereing your React components in the server.
Just make sure that the component that uses the hooks is only rendered on the client by using the use client
directive on top of your component.
'use client'
import { useCurrentUser } from "@mirohq/websdk-react-hooks";
// Your component
Wrap your component in a dynamic code block that will defer the component rendering to only execute in the client-side:
import dynamic from "next/dynamic";
import React from "react";
import { useCurrentUser } from "@mirohq/websdk-react-hooks";
const NoSsr: React.FC<React.PropsWithChildren> = (props) => (
<React.Fragment>{props.children}</React.Fragment>
);
const NoSSRWrapper = dynamic(() => Promise.resolve(NoSsr), {
ssr: false,
});
// And in your Nextjs page
const Component: React.FC = () => {
const { status, result, error } = useCurrentUser();
if (status === "success") {
return <p>The current user is "{result?.name}"</p>;
}
}
export default function OnlyInTheClient() {
return (
<NoSSRWrapper>
<Group />
</NoSSRWrapper>
);
}
- Miro Platform WebSDK
- React
- Typescript
- React Hookz Web
- Jest
- React testing library
- React Hooks Testing Library
This library is heavily inspired on https://github.com/react-hookz/web. Pure 💖 awesomeness 💖.
Please refer to the CONTRIBUTING.md guide to get started.
- useMiro - Access Miro SDK reference from React Context.
- useCurrentUser - Get current Miro user.
- useInfo - Get Miro board info.
- useOnlineUsers - Get online users in a Miro board.
- useSelectedItems - List selected items with possible predicate filter.
- useSession - Interact with Miro session.
- useStorage - Interact with Miro storage.
- useViewport - Interact with Miro viewport.