Topics: Custom software & SaaS, Mobile apps
Want this done for your business? Get a fixed quote or book a free 30-minute call.
In this guide
- Who are Bharat users, and what phones do they use?
- How small should your app be?
- How do you design for patchy networks and offline use?
- How do you add Hindi and regional languages properly?
- Should you support voice input and vernacular search?
- Which login and payment flows work best?
- How do you test on real budget devices?
- Frequently asked questions
- Build for the phone in your customer's pocket
Quick answer: Design for the phone your customers actually own. Keep the download small with Android App Bundles and compressed assets, make core tasks work offline, translate properly into the languages your users read, replace passwords and card forms with phone-number OTP and UPI, and test on entry-level devices over slow networks before launch.
Most apps are designed on a recent flagship, in an office with fast Wi-Fi, by people who read English all day. Many of the people those apps are meant for will open them on an entry-level Android phone with nearly full storage, a patchy signal and a preference for Hindi, Marathi or Tamil. Building for Bharat, the shorthand for India beyond the big metros, means treating those conditions as the default rather than the edge case.
Who are Bharat users, and what phones do they use?
They are customers in tier 2 and tier 3 towns and rural areas, often on entry-level Android phones, prepaid data and shared devices. Many came online through cheap mobile data and learned the internet through WhatsApp, YouTube and UPI apps, so those apps set their expectations.
Avoid two assumptions. Do not assume low ability: these users run businesses, pay bills and send money on their phones every day. Do assume low tolerance for friction: an app that is slow, heavy or confusing gets uninstalled to free space for the next family video.
Typical constraints to design around:
- Phones with limited RAM and storage, sometimes running Android Go, Google's edition for low-memory devices
- Storage already full of WhatsApp media
- Data packs with daily limits, and coverage that drops between towns
- One phone shared by several family members
- Older Android versions that stay in use for years
Your own data beats any general picture. Set up mobile app analytics after launch to see the real device models, Android versions and languages of your users; before launch, ask your sales or support team which phones customers bring in.
How small should your app be?
As small as you can make it, because every extra megabyte has to win a fight with photos and videos for space. There is no official target; treat each addition to download size as something that needs a reason.
Practical techniques:
- Ship an Android App Bundle. Google Play then delivers only the code and resources each device needs, rather than one large file for every phone.
- Compress images to WebP and use vector icons instead of multiple bitmap sizes.
- Download heavy assets on demand. Videos, large fonts and rarely used features can be fetched when needed, using Play Feature Delivery for optional modules.
- Remove unused libraries. Each SDK adds size, memory use and start-up time. Enable code shrinking in release builds.
- Watch memory, not just size. Low-RAM phones close background apps aggressively, so keep image caches small and save state often.
- Monitor Android vitals in Play Console for crash rate, freezes (ANRs) and slow start-up, filtered by device.
Your framework choice affects the baseline. Our comparison of Flutter vs React Native covers the trade-offs, and the FAQ below touches on native development for very low-end devices.
How do you design for patchy networks and offline use?
Go offline-first: the app should open, show useful data and accept actions with no connection, then sync when one appears.
| Feature | Online-only approach | Offline-first approach |
|---|---|---|
| Product catalogue | Loads from the server each time | Cached on the phone and refreshed in the background |
| Placing an order | Fails with an error | Saved locally, queued and sent when online |
| Forms and visit reports | Lost if the signal drops | Saved as drafts automatically |
| Images | Full size on every screen | Thumbnails first, full size on tap |
| Status | Spinner with no end | Clear message: "2 orders waiting to send" |
Underneath, that means a local database on the phone, a sync queue with retries, rules for conflicts (what happens if the price changed while an order waited) and small, paginated API responses. Show sync status plainly. Users who can see an order is safely queued do not place it three times.
How do you add Hindi and regional languages properly?
Plan languages into the build from the first screen, and get translations reviewed by people who speak them. Retrofitting is slow and expensive.
- Externalise every string so no text is hard-coded in screens.
- Use reviewed translation. Machine translation is a draft, not a release. Have native speakers check anything involving money, health, legal terms or instructions, and prefer everyday words over formal ones; sometimes the commonly used English word is clearer.
- Handle Indic scripts. Use fonts that render Devanagari, Tamil, Bengali and other scripts correctly, and let layouts stretch, because translated text is often longer.
- Make switching easy. Offer a language choice on first launch, showing each option in its own script (हिन्दी, தமிழ், বাংলা), and keep it reachable in settings. Android 13 and later also support per-app language settings.
- Format numbers locally. Show ₹ amounts with lakh and crore grouping where your users expect it.
Should you support voice input and vernacular search?
Yes, if your app relies on search or typing. Typing in a regional script on a small keyboard is slow, and many users already rely on voice notes and voice search elsewhere.
- Add a microphone button to search and longer text fields; Android's speech recognition supports many Indian languages.
- Let customers attach a voice note to an order or support request instead of typing.
- Make search tolerant: match native script and transliteration ("atta", "aata" and "आटा"), common misspellings and local names for products.
- Pair icons with text labels; icons alone are often ambiguous.
If your app has almost no text entry, put the effort elsewhere.
Which login and payment flows work best?
Phone-number OTP and UPI, because both match habits users already have.
- Use phone-number login with automatic OTP reading through Android's SMS Retriever API, which needs no SMS permission. WhatsApp OTP is a useful alternative.
- Let people browse before forcing sign-up.
- Keep sessions long, so shared and low-storage phones do not demand repeated logins.
- Use UPI intent checkout so payment happens in an app the customer trusts; our guide to UPI payment integration covers the flow. Keep cash on delivery where your category expects it, and avoid card forms as the default.
- Send receipts and order updates by WhatsApp or SMS, which cost the user no data inside your app.
How do you test on real budget devices?
Build a small device lab and test the way your users live. Emulators and flagship phones hide most of the problems that matter here.
- Buy three to five entry-level phones from brands popular with your customers, across the Android versions you support, including one low-memory device.
- Throttle the network. Test on slow, 3G-like speeds and drop the connection mid-task. Android emulators and network tools can simulate both.
- Fill the storage almost to capacity and turn on battery saver.
- Set the phone to a regional language and the largest font size.
- Use a cloud device lab such as Firebase Test Lab for breadth, alongside the physical phones.
- Watch real users in a target town for a day, if you can. Nothing else teaches as much.
Skipping this is one of the quieter reasons why mobile apps fail: the app works in the office and nowhere else. Offline sync and multiple languages add scope, so factor them into your budget; our guide to mobile app cost in India puts simple-to-mid cross-platform apps at ₹4–15 lakh.
Frequently asked questions
What is a good app size for Indian users?
There is no official number, so aim for the smallest size you can achieve and justify every addition. Ship an App Bundle, compress images and download heavy assets on demand. Check Play Console's size reports, and compare your app with the apps your customers already keep installed.
Should my app support Hindi and regional languages?
If many of your users live outside the big metros, yes. Start with the one or two languages your customers use most, based on your sales and support data, and build the app so adding more later is cheap. Have every translation reviewed by native speakers.
Is Flutter or native better for low-end Android phones?
Native Android development gives the finest control over size and memory, which matters on the cheapest devices. Flutter and React Native can perform well on modest hardware but add a baseline size. Choose based on budget, platforms and team, then test early on your target phones.
How do I make an app work offline?
Store the data users need on the phone in a local database, queue actions such as orders and forms when there is no connection, and sync automatically when one returns. Decide how conflicts are handled and show users clearly what is still waiting to send.
Which phones should we test on?
The phones your customers use, according to your analytics or your sales team. Without that data, choose entry-level models from brands popular in your region, one low-memory device and one phone on the oldest Android version you support.
Build for the phone in your customer's pocket
We design and build Android app development projects for Indian businesses that sell beyond the metros, with offline sync, regional languages and budget-device testing built in. Tell us who your users are and we will scope the app around them, with a fixed quote after a free call.