React Native

Offline-First Architecture

NetInfo, āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢāļ‹āļīāļ‡āļ„āđŒ, āļāļēāļĢāđāļāđ‰āđ„āļ‚āļ‚āđ‰āļ­āļ‚āļąāļ”āđāļĒāđ‰āļ‡, āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ„āļīāļ§, UX āđāļšāļšāļ­āļ­āļŸāđ„āļĨāļ™āđŒ

20 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒÂ·
Senior
1

āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļšāļš offline-first āđƒāļ™āļšāļĢāļīāļšāļ—āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļĄāļ·āļ­āļ–āļ·āļ­āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļšāļš offline-first āđ€āļ›āđ‡āļ™āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļšāļ—āļĩāđˆāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ–āļđāļāļŠāļĢāđ‰āļēāļ‡āđƒāļŦāđ‰āļ—āļģāļ‡āļēāļ™āļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļ āđ‚āļ”āļĒāļāļēāļĢāļ‹āļīāļ‡āļ„āđŒāļāļąāļšāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ€āļ›āđ‡āļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļĢāļ­āļ‡ āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļ°āļ–āļđāļāļˆāļąāļ”āđ€āļāđ‡āļšāđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļāđˆāļ­āļ™āđāļĨāđ‰āļ§āļˆāļķāļ‡āļ‹āļīāļ‡āļ„āđŒāļāļąāļš backend āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ āđāļ™āļ§āļ—āļēāļ‡āļ™āļĩāđ‰āļĢāļąāļšāļ›āļĢāļ°āļāļąāļ™āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļœāļđāđ‰āđƒāļŠāđ‰āļ—āļĩāđˆāļĢāļēāļšāļĢāļ·āđˆāļ™āđāļĄāđ‰āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ āļ‹āļķāđˆāļ‡āļ•āđˆāļēāļ‡āļˆāļēāļāđāļ™āļ§āļ—āļēāļ‡ online-first āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļžāļķāđˆāļ‡āļžāļēāļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļˆāļķāļ‡āļˆāļ°āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰

2

āļ„āļ§āļĢāđƒāļŠāđ‰āđāļžāđ‡āļāđ€āļāļˆāđƒāļ”āđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļŠāļ–āļēāļ™āļ°āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāđƒāļ™ React Native?

āļ„āļģāļ•āļ­āļš

@react-native-community/netinfo āđ€āļ›āđ‡āļ™āđāļžāđ‡āļāđ€āļāļˆāļĄāļēāļ•āļĢāļāļēāļ™āļŠāļģāļŦāļĢāļąāļšāļ•āļĢāļ§āļˆāļˆāļąāļšāļŠāļ–āļēāļ™āļ°āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāđƒāļ™ React Native āđ‚āļ”āļĒāđƒāļŦāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļ§āđˆāļēāļ­āļļāļ›āļāļĢāļ“āđŒāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļ­āļĒāļđāđˆāļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ (WiFi, āđ€āļ‹āļĨāļĨāļđāļĨāļēāļĢāđŒ) āđāļĨāļ°āļĄāļĩ listener āļŠāļģāļŦāļĢāļąāļšāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ•āđˆāļ­āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒ āļ–āļ·āļ­āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļŠāļģāļ„āļąāļāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļšāļš offline-first

3

āļˆāļ°āđƒāļŠāđ‰ NetInfo āđ€āļžāļ·āđˆāļ­āļĢāļąāļšāļŸāļąāļ‡āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

NetInfo.addEventListener āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļŠāļĄāļąāļ„āļĢāļĢāļąāļšāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđāļĨāļ°āļ„āļ·āļ™āļ„āđˆāļēāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļŠāļģāļŦāļĢāļąāļšāļĒāļāđ€āļĨāļīāļāļāļēāļĢāļŠāļĄāļąāļ„āļĢ āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ™āļĩāđ‰āļ„āļ§āļĢāļ–āļđāļāđ€āļĢāļĩāļĒāļāđƒāļ™ cleanup āļ‚āļ­āļ‡ useEffect āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļĢāļąāđˆāļ§āđ„āļŦāļĨāļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ callback āļˆāļ°āđ„āļ”āđ‰āļĢāļąāļšāļ­āđ‡āļ­āļšāđ€āļˆāļāļ•āđŒ state āļ—āļĩāđˆāļĄāļĩ isConnected, type āđāļĨāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ·āđˆāļ™ āđ† āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļ›āļąāļˆāļˆāļļāļšāļąāļ™ āđāļ™āļ§āļ—āļēāļ‡āļ™āļĩāđ‰āļˆāļģāđ€āļ›āđ‡āļ™āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ•āđˆāļ­āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ

4

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ isConnected āđāļĨāļ° isInternetReachable āđƒāļ™ NetInfo āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

5

āļ„āļ§āļĢāđƒāļŠāđ‰āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢāļ‹āļīāļ‡āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒāđāļšāļšāđƒāļ”āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļˆāļ”āļšāļąāļ™āļ—āļķāļāđāļšāļš offline-first?

+17 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ React Native āļ­āļ·āđˆāļ™āđ†

āļžāļ·āđ‰āļ™āļāļēāļ™ JavaScript

Junior
25 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ React

Junior
20 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ React Native

Junior
22 āļ„āļģāļ–āļēāļĄ

React Hooks

Junior
20 āļ„āļģāļ–āļēāļĄ

TypeScript āļŠāļģāļŦāļĢāļąāļš React āđāļĨāļ° React Native

Junior
22 āļ„āļģāļ–āļēāļĄ

āļ„āļ­āļĄāđ‚āļžāđ€āļ™āļ™āļ•āđŒāđāļĨāļ° API āļ‚āļ­āļ‡ React Native

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļŠāđ„āļ•āļĨāđŒāđāļĨāļ°āđ€āļĨāļĒāđŒāđ€āļ­āļēāļ•āđŒāđƒāļ™ React Native

Junior
18 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ™āļģāļ—āļēāļ‡āđƒāļ™ React Native

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ State āđƒāļ™ React Native

Mid-Level
24 āļ„āļģāļ–āļēāļĄ

Networking āđāļĨāļ° API āđƒāļ™ React Native

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ„āļ‡āļ­āļĒāļđāđˆāļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļŸāļ­āļĢāđŒāļĄāđāļĨāļ°āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

āđāļ­āļ™āļīāđ€āļĄāļŠāļąāļ™ React Native

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

Native Modules & Bridge

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āđ‚āļ„āđ‰āļ”āđ€āļ‰āļžāļēāļ°āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

āļŠāļīāļ—āļ˜āļīāđŒāđāļĨāļ° Device API

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

Push Notifications

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļš React Native

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢ Debug React Native

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

Build & Deployment

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

Expo vs React Native Bare

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

Senior
24 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ

Senior
20 āļ„āļģāļ–āļēāļĄ

Architecture Patterns

Senior
22 āļ„āļģāļ–āļēāļĄ

React Native New Architecture

Senior
24 āļ„āļģāļ–āļēāļĄ

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

Senior
20 āļ„āļģāļ–āļēāļĄ

CI/CD React Native

Senior
20 āļ„āļģāļ–āļēāļĄ

Monorepo āđāļĨāļ°āļāļēāļĢāđāļŠāļĢāđŒāđ‚āļ„āđ‰āļ”

Senior
18 āļ„āļģāļ–āļēāļĄ

āļŦāļąāļ§āļ‚āđ‰āļ­āļ‚āļąāđ‰āļ™āļŠāļđāļ‡

Senior
22 āļ„āļģāļ–āļēāļĄ

āļ§āļ‡āļˆāļĢāļŠāļĩāļ§āļīāļ•āđāļ­āļ›āđāļĨāļ°āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ€āļšāļ·āđ‰āļ­āļ‡āļŦāļĨāļąāļ‡

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļ•āļ™āđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ‹āļŠāļŠāļąāļ™

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

Monitoring & Crash Reporting

Senior
20 āļ„āļģāļ–āļēāļĄ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ React Native āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ„āļĢāļąāđ‰āļ‡āļ–āļąāļ”āđ„āļ›

āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļģāļ–āļēāļĄāļ—āļąāđ‰āļ‡āļŦāļĄāļ” flashcards āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„ āđāļšāļšāļāļķāļāļŦāļąāļ” code review āđāļĨāļ°āļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļŸāļĢāļĩ