Skip to main content

Troubleshooting

This guide helps resolve common issues when using next-state-adapter.

Store is not available in components​

Issue​

You are trying to access the store but get an undefined or null value.

Solution​

Make sure your component is wrapped in StoreProvider:

export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<StoreProvider>
{children}
</StoreProvider>
);
}

State is not updating after hydration​

Issue​

After fetching server-side data, the client store does not reflect the updates.

Solution​

Ensure you are using useStoreHydration correctly:

const { todos } = useStoreHydration.withTypes<RootStore>()(store => {
store.todos.init(initialTodos);
});

Also, verify that the fetched data is valid and structured correctly before hydration.

withStore HOC does not pass the store to class components​

Issue​

When using the withStore HOC, the store is not available in class components.

Solution​

Ensure that withStore is applied correctly:

export const UsersList = withStore(Users, (store, props) => {
store.users.init(props.initialUsers);
});

Also, confirm that the component is receiving store as a prop and using it properly.

Hydration mismatch warning in Next.js​

Issue​

You see a warning about hydration mismatch when rendering state-dependent components.

Solution​

Make sure that the initial state in the client matches the pre-rendered state from the server. This typically happens when data is fetched asynchronously but is not included in the initial render.

To fix this, ensure that server-fetched data is passed correctly as props and used for initial hydration.

Store updates are not triggering re-renders​

Issue​

Your components do not react to state changes.

Solution​

Check that your component is correctly consuming the store using useStore or useStoreHydration. If using MobX, ensure your component is wrapped with observer:

const TodoList = observer(() => {
const { todos } = useStore();
return (
<ul>
{todos.map(todo => (
<li key={todo.id}>{todo.title}</li>
))}
</ul>
);
});

Still having issues?​

If you encounter persistent problems, check the official documentation, browse GitHub issues, or seek community support.