Complex Issues with Dynamic Menu App Development Using MIT App Inventor

I am developing a restaurant menu app using MIT App Inventor that displays categories, items, prices, and images dynamically. The goal is to allow users to browse the full menu, view detailed item descriptions, and place orders directly from the app. The data for the menu is stored in a cloud database and updated regularly. My first challenge has been ensuring that all items and categories load correctly on app startup. Sometimes, when the app fetches data from the cloud, certain categories or items fail to display, even though the database contains the correct information. I suspect this may be related to timing issues with multiple asynchronous data fetches, but I am not sure how to structure blocks to guarantee reliable loading of all data.

Another major issue involves images. Each menu item has a high-resolution photo, but loading these images slows down the app and occasionally causes it to crash, particularly on older devices. I have tried resizing images before uploading and using the Image component with dynamic URLs, but the problem persists. I am looking for best practices in App Inventor for handling multiple large images efficiently, including whether caching strategies or alternative components could help prevent slowdowns or crashes while maintaining image quality.

Filtering and search functionality is also proving difficult. Users should be able to search for items, filter by category, or see only currently available items. I have attempted to implement this using dynamic lists and conditional logic blocks, but when multiple filters are applied simultaneously, the app sometimes returns incomplete results or behaves inconsistently. I am not sure if this is due to block logic errors or limitations in how App Inventor handles dynamic lists and database queries. Guidance on structuring dynamic filters and search in complex data-driven apps would be extremely helpful.

Another area of concern is the ordering workflow. I want users to select multiple items, customize options, and see a running total before submitting the order. While I have implemented a temporary list to store selected items and calculate totals, I occasionally encounter situations where the list resets unexpectedly, especially when navigating between screens. This breaks the ordering experience and frustrates users. I am seeking advice on maintaining state across multiple screens in App Inventor apps, particularly when handling dynamic lists and user selections for multi-step workflows.

Notifications and real-time updates add another layer of complexity. The app should notify users when items are unavailable or when special offers change. I have experimented with using TinyWebDB and cloud-based solutions for pushing updates, but there are delays and sometimes data conflicts, resulting in outdated information being displayed. I am curious if there are better approaches to implement real-time updates and notifications within the limitations of MIT App Inventor, especially for data-driven apps that need to stay accurate across multiple users.

Finally, I am planning to scale the app to support multiple restaurant locations, each with its own inventory, specials, and menu variations. This introduces challenges in structuring the database and app logic so that updates for one location do not affect another. I want a system where local staff can make changes independently, but users still have a seamless experience when browsing the app. Any advice on best practices for managing multi-location dynamic data, keeping the app responsive, and avoiding data conflicts would be extremely valuable for building a scalable and reliable restaurant menu application. Sorry for long post

Which cloud database?
What does the structure look like?

Think about the display size, if in portrait, it is unlikely to be much wider than 400px for phone, 1000px for table. Therefore your images do not need to be any bigger than that (have two images, display as required for device width). This avoids AppInventor having to carry out execessive iage processing.

If we can see what you are doing, blocks, data etc. then we can probably advise on best practice

This will most likely be in your blocks logic.

Do you require multiple screens ? Could this all be done with virtual screens on Screen1 ?

There exist PAID (firebase messaging, one signal)and FREE (iToo) solutions for realtime notifications, or use the dataChanged events with firebase or cloudDB (app would need to be open for these)

Should just be the case (easy to say this one) of creating your app to load different data for each restaurant, user selects a restaurant as is presented with that locations data

Some "top line" responses to your questions, without having a full provision of your app so far, it is difficult to comment further.

See tip 2 here

TL;dr

Taifun