Client Side
Errors can be handled using try-catch block and the message can be shown using an alert or toast.
If the server we are fetching data is configured properly for CORS (open for everyone) we can directly get data using fetch or axios.
Performance wise we can use client side fetching to avoid page reloads (page reload causes all content to reload if browser caching is not configured)
Not ideal for SEO.
If not developed properly, client side code can become heavier and lead to performance issues.
Server Side
Require full page reloads to display errors (In the context of Server side rendering PHP and Express)
When SEO matters we should implement Server Side Rendering (SSR) as server side pages are crawlable by search engines.
To get data we should implement proper pagination, limiting, searching, filtering and sorting features on our server.
Data validation and santization can be done well on the server side.
Finally if user interactions is the project focus we must use Client Side and if SEO is a concern we must use Server Side. This information is the context of PHP and Node JS (Express).