React Native Professional Standards & Competencies 4 — Questions and Answers
Question 1: A React Native app crashes in production but not in development. What is the most professional first step?
- Push a hotfix immediately based on a guess
- Capture and analyze the crash report from a service like Sentry or Firebase Crashlytics before making any code change (Correct answer)
- Ask users to reinstall the app
- Revert the last deployment unconditionally
Correct answer: Capture and analyze the crash report from a service like Sentry or Firebase Crashlytics before making any code change
Crash reports with stack traces and device context identify the real root cause before any code change is made.
Question 2: Which practice best demonstrates professional version control discipline in a React Native project?
- Committing large batches of changes at the end of the week
- Committing small, logically atomic changes with descriptive messages that explain why the change was made (Correct answer)
- Avoiding branches to keep history linear
- Force-pushing to main when needed to clean history
Correct answer: Committing small, logically atomic changes with descriptive messages that explain why the change was made
Small atomic commits with clear 'why' messages make code review, bisecting, and reverting straightforward.
Question 3: A product manager asks for an urgent feature that skips QA. The professional developer response is to:
- Implement and ship without testing to meet the deadline
- Explain the risks of skipping QA, propose a minimal smoke-test plan, and document the accepted risk in writing (Correct answer)
- Refuse to implement anything without a full QA cycle
- Ship it and add tests after the fact without telling anyone
Correct answer: Explain the risks of skipping QA, propose a minimal smoke-test plan, and document the accepted risk in writing
Surfacing risk, proposing a pragmatic minimum, and documenting accepted risk are professional behaviors that protect the team and product.
Question 4: What does the React Native New Architecture's JSI (JavaScript Interface) primarily improve over the old bridge?
- App icon rendering quality
- Direct synchronous communication between JS and native code, eliminating async serialization overhead (Correct answer)
- Bluetooth connectivity speed
- App Store submission time
Correct answer: Direct synchronous communication between JS and native code, eliminating async serialization overhead
JSI replaces the asynchronous JSON bridge with direct C++ object references, enabling synchronous native calls and better performance.
Question 5: Which behavior reflects professional handling of a disagreement with a team member's architectural decision in code review?
- Block the PR indefinitely until they agree with you
- Raise specific technical concerns with evidence or alternatives, discuss openly, and accept the team's consensus (Correct answer)
- Approve the PR silently to avoid conflict
- Implement your preferred solution without discussion
Correct answer: Raise specific technical concerns with evidence or alternatives, discuss openly, and accept the team's consensus
Evidence-based technical discussion followed by team consensus respects both technical quality and collaborative decision-making.
Question 6: A React Native app stores auth tokens in AsyncStorage. What should a security-conscious developer do?
- Leave it as-is since AsyncStorage is encrypted by default
- Migrate tokens to react-native-keychain or an equivalent secure storage solution that uses platform Keychain/Keystore (Correct answer)
- Base64-encode the tokens before storing them in AsyncStorage
- Store tokens in a Redux store with persistence
Correct answer: Migrate tokens to react-native-keychain or an equivalent secure storage solution that uses platform Keychain/Keystore
AsyncStorage is unencrypted plain text; platform Keychain/Keystore provides OS-level encryption appropriate for auth credentials.
Question 7: What is the professional rationale for pinning exact dependency versions in a React Native project's package-lock.json?
- To prevent any future dependency updates
- To ensure reproducible builds across all developer machines and CI environments (Correct answer)
- To reduce the node_modules folder size
- To comply with Apple App Store requirements
Correct answer: To ensure reproducible builds across all developer machines and CI environments
Locked versions guarantee that every environment resolves the same dependency tree, eliminating 'works on my machine' issues.
A React Native app crashes in production but not in development.
What is the most professional first step?