Skip to content

Nykaa Mobile App Development Interview Questions & Answers

Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.

About Nykaa hiring for Mobile App Development roles

Nykaa, operated by FSN E-Commerce Ventures, is an Indian beauty, personal care and fashion e-commerce company with both online and offline stores. Its technology and analytics teams work on search, recommendations, marketing, inventory and customer analytics. It hires for software engineers, SDETs, business analysts and data analysts.

For Mobile App Development roles, this Nykaa practice set focuses most on App Store and Play Store Publishing (7), React Native Navigation, State and Native Modules (5), Testing, Performance and CI/CD (4), Mobile Development Fundamentals (4). It has 4 easy, 18 medium, 8 hard questions, so you can start easy and work up to the harder ones.

Company type
E-commerce & consumer tech
Headquarters
Mumbai, India
Main India offices
Mumbai, Gurugram, Bengaluru

Nykaa Mobile App Development interview process

  1. Online assessment or assignment
  2. Technical or case round
  3. Hiring manager round
  4. HR round

Typical pattern based on public candidate experiences. Rounds vary by role, team and year.

Solved for NykaaStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
3 questions free Unlock the rest in seconds
01

How do you decide which devices to test on for an Indian user base?

Save to ▾
Show answer
Use analytics from the existing app or market data to identify the most common manufacturers, OS versions, screen sizes and RAM levels among your users. Cover a budget device with 3 to 4 GB RAM, a mid-range phone, a recent flagship, an older OS version you still support, and at least one iPhone and tablet. Use cloud device farms for wider coverage and add devices that generate many crashes.
02

Explain the mobile app lifecycle states on Android and iOS.

Save to ▾
Show answer
Both platforms move apps between foreground active, inactive, background and terminated states. On iOS, an app goes inactive during interruptions like calls, then background, where it gets limited time before suspension. On Android, activities move through resumed, paused and stopped, and the process can be killed in background. Cross-platform apps observe these through AppLifecycleListener in Flutter or AppState in React Native to pause work and save data.
03

Your Flutter codebase mixes setState, Provider and get_it randomly across screens. How would you clean it up?

Save to ▾
Show answer
Agree on one approach with the team, for example Riverpod for app state and setState only for local widget state, and document examples. Migrate gradually, starting with the most buggy or most changed features, and write tests before moving logic. Add lint rules and pull request checklists so new code follows the standard. Avoid a big-bang rewrite that blocks feature work for weeks.
04

The API responses are slow on mobile networks. What can the mobile team ask the backend team to change?

Save to ▾
Show answer
Ask for pagination with sensible page sizes, gzip or brotli compression, removing unused fields or providing screen-specific endpoints, and aggregated endpoints to avoid multiple sequential calls. Request proper cache headers and ETags so the client can reuse responses. Ask for resized images through a CDN and HTTP/2 or HTTP/3 support. Share measured timings from real devices to justify the requests.
05

How do you design an offline-first mobile app?

Save to ▾
Show answer
Store data in a local database and render the UI from it, so the app works without network. Queue user changes locally with a pending status and sync them in the background when connectivity returns, using retries with backoff. Fetch server changes using timestamps or sync tokens and merge them. Resolve conflicts with clear rules like last write wins or server authority, and show sync status to users.
06

How do you detect and fix memory leaks in cross-platform apps?

Save to ▾
Show answer
Leaks usually come from subscriptions, timers, controllers and listeners that are never disposed, or global caches that grow without limits. In Flutter, dispose controllers and cancel stream subscriptions in dispose, and check the DevTools memory view for growing instances. In React Native, return cleanup functions from useEffect and remove event listeners. Repeatedly open and close a screen while profiling to confirm memory returns to baseline.
07

How do you persist state in React Native between app launches?

Save to ▾
Show answer
For small key-value data use AsyncStorage or MMKV, which is much faster and synchronous. Persist Redux with redux-persist or Zustand with its persist middleware, choosing only the slices that need it. Store tokens in secure storage like expo-secure-store or Keychain and Keystore wrappers, never in plain storage. For larger structured data use SQLite through expo-sqlite or an ORM like WatermelonDB.
08

How do you force users to update when an old version has a critical bug?

Save to ▾
Show answer
Keep a minimum supported version in remote config or an API endpoint, check it at startup and show a blocking update screen linking to the store. On Android, use the Play In-App Updates API with the immediate flow for critical updates and flexible flow for normal ones. Keep the backend compatible with older versions for a defined period, and use forced updates sparingly because they frustrate users.
09

A user reports that they cannot find your app in the store on their old phone. Why could this happen?

Save to ▾
Show answer
The app may not be available for their device because the minimum OS version is higher than theirs, the device lacks a required hardware feature declared in the manifest, the app is not released in their country, or the device architecture is excluded. Check the device catalogue in Play Console and the deployment target on iOS. Decide whether supporting that segment is worth lowering requirements.
10

How do you integrate a payment gateway in a mobile app safely?

Save to ▾
Show answer
Create the order on your backend with the amount, get an order ID, and open the gateway's SDK checkout in the app with that ID. After payment, the SDK returns a payment ID and signature, which the app sends to the backend to verify with the secret key before marking the order paid. Rely on server-side webhooks as the final truth. Never keep secret keys in the app or trust client-side success alone.
11

The product team wants the same app on mobile and web from one codebase. What would you propose?

Save to ▾
Show answer
With React Native, Expo with Expo Router and React Native Web lets one codebase target Android, iOS and web, with file-based routes working as URLs. With Flutter, the web target exists but suits app-like experiences more than SEO-heavy pages. I would share business logic and most screens, keep SEO landing pages on a web framework, and plan for platform-specific tweaks like hover states and keyboard navigation.
12

How do you explain your architecture choices to a new team member?

Save to ▾
Show answer
I start with the problem each layer solves, using one real feature from our app to trace a user tap through widget, state notifier, repository and API, and back to the UI. I share a short diagram and the team's architecture document, then give them a small task touching every layer. I review their first pull request closely and invite questions so they understand the reasons, not only the rules.
13

Write a Cubit that loads products and emits loading, success and error states.

Save to ▾
Show answer
sealed class ProductState {} class ProductLoading extends ProductState {} class ProductLoaded extends ProductState { ProductLoaded(this.items); final List<Product> items; } class ProductError extends ProductState { ProductError(this.message); final String message; } class ProductCubit extends Cubit<ProductState> { ProductCubit(this._repo) : super(ProductLoading()); final ProductRepository _repo; Future<void> load() async { emit(ProductLoading()); try { emit(ProductLoaded(await _repo.fetchProducts())); } catch (_) { emit(ProductError('Could not load products')); } } }
14

A global Redux store causes the whole app to re-render on every small change. How do you fix it?

Save to ▾
Show answer
Components are probably selecting large parts of state or creating new objects in selectors. Select only the fields each component needs with useSelector, memoise derived data with createSelector, and keep state normalised. Move server data to RTK Query or TanStack Query and local UI state back into components. Verify improvements with the React profiler, checking which components render after each action.
15

Your app needs a third-party SDK that has only native Android and iOS libraries. How do you integrate it in React Native?

Save to ▾
Show answer
First check whether a maintained wrapper package exists. If not, create a native module using the Expo Modules API or a TurboModule with a typed spec, add the SDK through Gradle and CocoaPods or Swift Package Manager, and expose a small JavaScript API with promises and events. If using Expo, write a config plugin to apply native setup during prebuild. Test on both platforms and document the setup.
16

Users lose their place in a long Flutter form when they get a phone call and the app is killed in background. How do you fix it?

Save to ▾
Show answer
The operating system may kill the app process in background, and in-memory state is lost. Save draft form data to local storage, such as shared_preferences, Hive or a SQLite table, as the user types with a short debounce, and restore it when the screen opens. Flutter's RestorationMixin and restorationScopeId can restore simple UI state like scroll position and text fields. Clear the draft after successful submission.
17

The app takes six seconds to start on low-end phones. How do you improve it?

Save to ▾
Show answer
Measure cold start on a release or profile build and trace what runs before the first frame. Defer non-critical SDK initialisation such as analytics and ads, avoid large synchronous storage reads and network calls before showing UI, load the first screen with cached data, and lazy-load other features. In Flutter, keep main() light; in React Native, use Hermes and inline requires. Use a native splash screen to avoid a blank screen.
18

What is the difference between StatelessWidget and StatefulWidget?

Save to ▾
Show answer
A StatelessWidget has no mutable state; its build output depends only on constructor parameters and inherited data. A StatefulWidget creates a State object that persists across rebuilds and holds mutable data; calling setState marks it dirty so build runs again. Use stateful widgets for local UI state like animations, text controllers or toggles, and lift shared or business state into a state management solution.
19

How do you debug a React Native app?

Save to ▾
Show answer
Use React Native DevTools, the default debugger since 0.76, for console logs, breakpoints, React component inspection and profiling. Inspect network requests with the network panel or a proxy. For native crashes, check Logcat in Android Studio and the Xcode console. Use the performance monitor overlay for frame rates, and add a crash reporting tool like Sentry or Crashlytics for production errors with source maps uploaded.
20

How would you structure the folder layout of a medium-sized cross-platform app?

Save to ▾
Show answer
Organise by feature rather than by type: features/auth, features/cart, features/profile, each containing UI, state logic and data code. Keep shared pieces in core folders such as core/network, core/storage, core/theme and core/widgets or components. Put configuration for environments separately. This keeps related code together, makes ownership clear and lets features be moved into packages later. Enforce the structure with lint rules and code review.
21

Write a GitHub Actions workflow that runs Flutter tests on every pull request.

Save to ▾
Show answer
name: flutter-ci on: pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: channel: stable cache: true - run: flutter pub get - run: dart format --set-exit-if-changed . - run: flutter analyze - run: flutter test --coverage
22

Why are you interested in this mobile developer role at our company?

Save to ▾
Show answer
Connect your skills to the role honestly. For example: your app serves millions of users in tier 2 and tier 3 cities, and I have focused on performance for budget phones and slow networks in my projects. I have shipped two cross-platform apps to both stores, and I want to work where release quality and user experience matter at scale. I also like that your team uses Flutter, which I enjoy and want to master.
23

How do you think about mobile system design for a chat feature?

Save to ▾
Show answer
Start with requirements: one-to-one or group, media, read receipts, offline sending. The client keeps a local database as source of truth, shows sent messages instantly with a pending status, and syncs over a WebSocket while foregrounded, using push notifications in background. Handle reconnection, ordering by server timestamps, pagination of history, and retries with idempotent message IDs. Encrypt sensitive data and limit media size before upload.
24

Store review is delaying your launch date. How do you plan releases to avoid this?

Save to ▾
Show answer
Submit builds early, a few days before the planned date, and use manual release so you can publish the approved build at launch time. Ship the code behind a remote feature flag so the feature can be enabled on launch day without a new review. Keep a pre-approved build ready, follow store guidelines closely and include clear review notes and demo login details for reviewers.
25

Deep links open the app but land on the home screen instead of the product page. How do you debug it?

Save to ▾
Show answer
Check that the link configuration maps the URL path to the right screen name, including nested navigators, and that path parameters match. Verify verified link setup on both platforms: assetlinks.json for Android and the associated domains entitlement plus the site association file for iOS. Test with adb shell am start and xcrun simctl openurl. Also handle links when the app is cold started versus already running.
26

An over-the-air update crashed the app for users on an older native build. What went wrong and how do you prevent it?

Save to ▾
Show answer
The update probably used a native module or API that the older binary did not have, so JavaScript called missing native code. Prevent this by setting runtime versions tied to native code fingerprints, so updates only reach compatible builds. Roll out updates gradually, monitor crashes per update ID, and keep a rollback by republishing the previous update. Test updates on the oldest supported build before release.
27

What are privacy declarations required by the app stores?

Save to ▾
Show answer
The Play Store requires a data safety form describing what data is collected, shared, encrypted and deletable, plus a privacy policy link and account deletion option for apps with accounts. The iOS App Store requires privacy nutrition labels, a privacy manifest file for the app and listed third-party SDKs describing data use and required reason APIs, and App Tracking Transparency permission before tracking users across apps.
28

Your app works on Android but crashes immediately on iOS when the user taps the camera button. What is the likely cause?

Save to ▾
Show answer
The most common cause is a missing NSCameraUsageDescription key in Info.plist. iOS terminates the app when it requests a protected resource without a usage description string. Add descriptions for camera, photo library, microphone and location as required by the plugin, written clearly for the user. Also verify the plugin's iOS setup steps, run pod install, and test on a real device since simulators lack cameras.
29

Write an EAS configuration for development, preview and production builds.

Save to ▾
Show answer
{ "cli": { "version": ">= 12.0.0" }, "build": { "development": { "developmentClient": true, "distribution": "internal" }, "preview": { "distribution": "internal", "channel": "preview" }, "production": { "autoIncrement": true, "channel": "production" } }, "submit": { "production": {} } }
30

Users get logged out randomly. The access token refresh seems to fail sometimes. What could be wrong?

Save to ▾
Show answer
A common cause is a race condition: several requests receive 401 at once and each triggers a refresh, so later refreshes use an already rotated refresh token and fail, logging the user out. Fix it by allowing only one refresh at a time and queueing other requests until it completes, then retrying them with the new token. Also check device clock issues, token expiry settings and secure storage read failures.

Tips to crack the Nykaa Mobile App Development interview

  • Prepare cases on beauty e-commerce like repeat purchases, private label growth or offline store performance.
  • Practise SQL and Excel analysis on customer and order data, focusing on retention and basket size.
  • Use the Nykaa and Nykaa Fashion apps and suggest measurable improvements to discovery or checkout.
  • Keep a one-minute story ready for every project on your CV: problem, your part, tools, result.
  • Practise the hard questions on this page aloud; Nykaa interviewers usually ask follow-ups on your first answer.

Frequently asked questions

How many rounds are there in the Nykaa Mobile App Development interview?

Candidates usually go through 4 stages: Online assessment or assignment; Technical or case round; Hiring manager round; HR round. The exact rounds change with the role, team, location and your experience, so confirm the process with the recruiter.

Which topics should I prepare for the Nykaa Mobile App Development interview?

This practice set leans on App Store and Play Store Publishing (7), React Native Navigation, State and Native Modules (5), Testing, Performance and CI/CD (4), Mobile Development Fundamentals (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Nykaa interviewers ask you to walk through real work.

Are these the exact questions asked at Nykaa?

No. These are curated practice questions that match the skills and difficulty usually tested in e-commerce & consumer tech interviews like Nykaa's. They are not a leaked or verified list of past questions.

Where does Nykaa hire Mobile App Development professionals in India?

Nykaa has large teams in Mumbai, Gurugram, Bengaluru. Openings and locations change often, so check the Nykaa careers page and filter by city and experience.

Mobile App Development questions for similar companies