Skip to content

Changelog

All notable changes to RapidMart, newest first. Each version lists what was added, changed and fixed; the upgrade steps are in the documentation (Updating). Format: Keep a Changelog, versions: Semantic Versioning.

  • First release of RapidMart: a multi-vendor delivery platform for groceries, restaurants, pharmacies and shops, with parcels, doctor consultations and lab tests.
    • Laravel admin dashboard: markets, zones and currencies; stores, riders and customers; orders and dispatch; promotions, referrals and reviews; disputes, payouts, tax and finance reports; Screen Builder for the app home screens; 7 languages with right-to-left.
    • Store web panel: browser till (POS) that works offline, live orders with an alarm, kitchen display, products with bulk edit and spreadsheet import, earnings and payouts, insights, reviews, store settings, the pharmacy prescription desk, help and web onboarding.
    • Flutter apps: customer, seller (with an in-store POS) and rider.
    • Public marketing website with a delivery-area check.
    • Web installer.
  • Admin: Demo mode for a public demo site: DEMO_MODE=true blocks settings, accounts, uploads and deleting, shows a banner and one-click demo sign-ins, and php artisan demo:reset rebuilds the demo data nightly.
  • Documentation: The full documentation is now in the download as well, to read offline (Documentation.html, or documentation/index.html), with new pages for every .env setting, Realtime with Reverb or Pusher, and how AI tools were used to make RapidMart.
  • Documentation: Mobile apps → Screen Builder preview explains when and how to rebuild the admin’s phone preview after changing the app screens, with a build script that now ships in packages/screen_preview/build.sh.
  • Emails: Notification emails: customers, stores, riders and admins now get emails for their events — order confirmation and delivery receipts, cancellations, refunds, payouts, store and rider approvals, prescriptions, support replies, new store and rider applications and more — in each person’s language, in a branded layout. All emails, password resets and invites included, now use your logo, brand colour and contact details. Settings → Email → Notification emails has a switch and a preview for each.
  • Installation: Hosts that serve the project folder instead of public/ (such as Hostinger’s Git deployment) work out of the box: a .htaccess in the project folder passes every request into public/ and keeps .env, storage and the rest unreachable.
  • Markets: Add market → Start from a country: pick one of 241 countries and the form fills in its currency and number format, timezone, languages, phone format, distance unit and standard sales tax.
  • Payments: Five new payment gateways: Mercado Pago (Latin America: cards, Pix, OXXO), PayTabs (Gulf, Egypt, Jordan: mada, KNET, Apple Pay), Tabby (pay in 4 in the UAE, Saudi Arabia and Kuwait, for orders), Paymob (Egypt, Saudi Arabia, UAE, Oman, Pakistan) and Midtrans (Indonesia: GoPay, QRIS, virtual accounts). Each has its admin settings card, webhooks, refunds and setup notes in the documentation.
  • Screen Builder: Screen Builder: product rails have a “Full-width banner + rail” layout — a full-width campaign picture with the products sitting on it.
  • Snap to Shop: Snap to Shop and Snap to List work with OpenAI as well as Gemini, using the provider chosen in Settings → AI. A key saved for one provider is never sent to the other, and GEMINI_API_KEY / OPENAI_API_KEY in .env now work as a fallback.
  • Website: Website: an Android app link can point to an .apk file instead of Google Play. The badge then reads “Download for Android” and downloads the file directly (see App store links in the branding docs).
  • Admin: The dashboard’s currency switch is a searchable picker: each currency shows its name, symbol and the markets that use it, and works from the keyboard.
  • Admin: Admin dashboard: the currency switch now converts every market’s money into the picked currency at your exchange rates, instead of showing only the orders placed in that currency. A currency with no rate is left out and named above the figures, with a link to add one.
  • AI: Settings → AI offers current models: Gemini 3.8 Flash (default), 3.5 Flash-Lite, 3.6 Flash, Gemini 4 Argon and 3.1 Pro Preview; OpenAI GPT-6 Luna (default), 6.1 Terra, 6.1 Sol and 6 Astra. A saved model that was retired (Gemini 2.0, 2.5 and 3 Preview, GPT-4o and GPT-4.1) switches to its successor automatically. The Snap to Shop similarity threshold default is now 0.66, tuned for the new embedding models.
  • Apps: App module headers (food, grocery, pharmacy, shops, offers): a little more space between the address line and the search bar.
  • Apps: Store and rider apps: when sign-in fails for a reason the app doesn’t recognise, it shows Firebase’s actual message instead of “Authentication failed” or “We couldn’t sign you in”.
  • Apps: The Android builds of all three apps compile against and target Android 16 (API 36).
  • Customer app: The customer app’s home header shows the delivery time over the address (“Delivery in 15 min”), with a softer search field, and the Grocery tile shows its delivery time.
  • Customer app: iOS Live Activity redesigned: the store’s logo, arrival time, rider and a live progress track on the lock screen; a countdown, progress ring and rider with chat in the Dynamic Island; one-tap star rating when delivered. All labels come translated from the server.
  • Customer app: Every screen now shows the same two “couldn’t load” states — a full-page one when a screen can’t load and a slim inline one for a single section, a sheet or the next page of a list. They say “You’re offline” when the phone has no connection and “Something went wrong” when the server fails, and Retry shows a spinner while it tries again.
  • Demo data: The sample data now has 10 restaurants with full menus (sections, sizes and add-ons, a photo for every dish) and proper logos for every restaurant and for RapidMart’s own grocery and pharmacy.
  • Demo data: The grocery store’s demo catalogue is RapidMart’s own: 64 generic products, four in every aisle, each shown with its aisle picture. The demo shops’ logos and covers and the pharmacy’s product pictures now ship with the seeders, so a demo install shows them.
  • Snap to Shop: Snap to Shop reads what a photo shows as item, brand, size and colour in the customer’s language, ranks text matches by how many words they share, and shows a match percentage only for real visual matches.
  • Snap to Shop: Without an AI key, Snap to Shop and Snap to List are now off instead of showing made-up results: the customer app hides its camera buttons and the seller app asks for the product details by hand. Settings → AI shows whether photo search is ready and how much of the catalog is indexed.
  • Store and rider apps: The same two “couldn’t load” states as the customer app — a full-page one when a screen can’t load and a slim inline one for a section or the next page of a list — saying “You’re offline” or “Something went wrong” depending on the cause, with Retry.
  • Store app: Store app, Snap to List: the AI sparkle shimmers and pulses while a photo is being analyzed.
  • Store app: Store app: the “We’re verifying your store” screen is now animated (breathing shield, steps that tick in, a pulsing current step) and plays a short “You’re approved!” moment before opening the store.
  • Website: App store links for the website’s badges, QR code and download page are now set in .env (MARKETING_CUSTOMER_IOS_URL and the others) instead of editing config/marketing.php.
  • Website: Website: store showcases (home, service pages, phone mockups, partner logos) show only stores from the visitor’s market, found from their IP; visitors from a country without a market see the default market’s stores. Detection needs a CDN country header or the GeoLite2 database (Settings → Integrations).
  • Admin: Admin dashboard: Top stores shows each store’s logo instead of only its first letter.
  • Apps: The apps no longer get stuck on “Can’t connect right now” for signed-in users when the server’s Firebase settings are missing or wrong; only signing in needs Firebase.
  • Apps: Sign-in in all three apps: tapping outside the phone or code field closes the keyboard, and it no longer stays open when you move on to the code step or after signing in.
  • Apps: iOS phone sign-in in all three apps no longer fails with “remote notifications … need to be forwarded to FirebaseAuth’s canHandleNotification”.
  • Apps: iOS push notifications in all three apps: messages now reach the app while it’s open, and tapping a notification opens the right screen, including when the tap launches the app.
  • Apps: Apps: requests made a few seconds after the previous one (such as the store pickup-address search or saving store details) no longer fail with “Couldn’t reach the server” on hosts that close idle connections after 5 seconds (LiteSpeed, Apache).
  • Customer app: Each basket in the cart now shows its store’s logo instead of a generic icon, including baskets rebuilt with Order again.
  • Customer app: The hosted payment page now closes on Android when a gateway sends the customer back with a form post.
  • Customer app: A restaurant menu no longer jumps back to the top while you scroll down it: keeping the active section tab in view was scrolling the whole menu.
  • Customer app: Store logos fill their circle on store cards and store pages; a white ring used to pad them in, leaving a square logo with clipped corners.
  • Demo: Demo data: order times now follow each other (accepted, ready, picked up, delivered), so the tracking timeline reads in order.
  • Demo data: Demo data seeded on a server that has only the backend now links the grocery aisle pictures, so the Grocery home’s aisle tiles show their photos instead of empty placeholders.
  • Installer: New installs now get the customer app’s home and module screens straight away; before, the app’s Food, Grocery and other module screens showed “No stores nearby” until an admin installed them. Sites already installed without them: run php artisan db:seed —class=ScreenSetupSeeder —force.
  • Payouts: Shop payouts are now recorded in the shop’s market currency; before, they were saved as USD whatever the market, so payout totals showed in USD.
  • Screen Builder: The Screen Builder preview shows the module tiles’ pictures (Food, Grocery, Pharmacy, Shops, Parcel) like the app, instead of plain icons; and it loads on hosts that served its WebAssembly file as plain text.
  • Screen Builder: The phone preview no longer says “The preview isn’t responding” while it is still loading on a slow connection, and the server compresses its renderer file so it starts faster.
  • Screen Builder: The “Search promotions to link” box in the campaign editor shows as one field instead of a box inside a box.
  • Snap to Shop: Snap to Shop works again: it used Google’s text-embedding-004 model, which Google shut down in January 2026, so photo searches failed once a Gemini key was set. It now uses gemini-embedding-2, or OpenAI’s text-embedding-3-small, and rebuilds the catalog index by itself when the provider changes.
  • Store app: Store app: product photos, order item photos, the store logo and review photos now load; images sent as storage paths were left blank.
  • Store app: Store app, Snap to List: when no AI provider is set up, sellers see “Snap to List isn’t available yet” instead of “Our server is having trouble”.