React-native: RCTDevLoadingView рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RCTBridge рдХреЛ рдбрд┐рд╕реНрдкреИрдЪ_sync рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд╕реЗ рдЧрддрд┐рд░реЛрдз рдкреИрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЕрдХреНрддреВре░ 2017  ┬╖  106рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react-native

рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЖрдИрдУрдПрд╕ рдРрдк рд╕реНрдЯрд╛рд░реНрдЯ (рдпрд╛рдиреА рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ) рдкрд░ рдорд┐рд▓рддреА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ?

рд╣рд╛рдБ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝реЗ рд╣реИрдВ?

рд╣рд╛рдБ

рд╡рд╛рддрд╛рд╡рд░рдг

OS: macOS рд╕рд┐рдПрд░рд╛ 10.12.6
рдиреЛрдб: 6.10.2
рд╕реВрдд: 1.0.2
npm: 5.4.2
рдЪреМрдХреАрджрд╛рд░: 4.7.0
Xcode: Xcode 9.0 рдмрд┐рд▓реНрдб рд╕рдВрд╕реНрдХрд░рдг 9A235
Android Studio: 2.1 AI-143.2915827

рдкреИрдХреЗрдЬ: (рд╡рд╛рдВрдЫрд┐рдд => рд╕реНрдерд╛рдкрд┐рдд)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: ^ 16.0.0 => 16.0.0
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: ^ 0.49.3 => 0.49.3

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

  1. рдРрдк рд╢реБрд░реВ рдХрд░реЗрдВ

    рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

capture d ecran 2017-10-15 12 49 45

рдкреНрд░рддрд┐рдХреНрд░рдордг рдбреЗрдореЛ

рдПрди / рдП

рдХреБрдЫ рдкреИрдХреЗрдЬ рдЬреЛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

https://github.com/antoinerousseau/react-native-custom-compenders
https://github.com/rebeccahughes/react-native-device-info
https://github.com/evollu/react-native-fcm
https://github.com/gwmccull/react-native-polyfill
https://github.com/getsentry/react-native-sentry

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреГрдкрдпрд╛ +1 s рдЬреЛрдбрд╝рдирд╛ рдмрдВрдж рдХрд░реЗрдВ, рдпрд╣ рдИрдореЗрд▓ рд╕реВрдЪрдирд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдЬреЛрдбрд╝реЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рднреА 106 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рднреА!

IOS рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреАрд▓рд╛ рдореБрджреНрджрд╛ рдорд┐рд▓рд╛

рдореИрдВ рдЗрд╕реЗ рднреА рджреЗрдЦрддрд╛ рд╣реВрдВред рд╕рдВрднрд╡рддрдГ # 11196 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ; рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This method must not be called before the JS thread is created'

рдореБрдЭреЗ iOS 11 рдкрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреИрд╕реЗ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╣реИред рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

+1

+1

рдХреГрдкрдпрд╛ +1 s рдЬреЛрдбрд╝рдирд╛ рдмрдВрдж рдХрд░реЗрдВ, рдпрд╣ рдИрдореЗрд▓ рд╕реВрдЪрдирд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдЬреЛрдбрд╝реЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╡рд╣реА рдореБрджреНрджрд╛ред рдпрд╣рд╛рдВ рд╡реЗ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдбрд┐рд╡рд╛рдЗрд╕-рдЬрд╛рдирдХрд╛рд░реА
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХ
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕рдВрд╡реЗрджрдирд╢реАрд▓-рдЬрд╛рдирдХрд╛рд░реА
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд╕реНрдиреИрдХрдмрд╛рд░
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-svg
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡реЗрдХреНрдЯрд░-рдЖрдЗрдХрди

@Antoinificseau рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЪреМрд░рд╛рд╣реЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЗрд╕ рдмрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд╛рди рд╣реИрдВ:

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдореЗрдВ рд╣реА рдПрдХ рдмрдЧ
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдПрдХ рдмрдЧ
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХрдИ рдмрдЧ

рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реА, рдФрд░ rn 0.49 рд╕реЗ 0.50 рддрдХ рдЪрд▓рд╛ рдЧрдпрд╛ред рдФрд░ рдЕрдм рдореБрдЭреЗ рдпрд╣ рдмрдЧ рдорд┐рд▓ рдЧрдпрд╛ред рдЕрдЧрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИ рдЬрдм рдореИрдВ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред

рд╡рд╣реА рдореБрджреНрджрд╛...
рддреЛ рдХреНрдпрд╛ рдпрд╣ рдореЗрд░реА рдЧрд▓рддреА рдирд╣реАрдВ рдереА?

рдПрдХ рд╣реА рдореБрджреНрджрд╛ ... рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рд╡рд╣реА рдореБрджреНрджрд╛ред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪреА рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдкреИрдХреЗрдЬ react-native-sentry ред

рдЖрдЬ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ рдРрдк рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рдЬреЛ рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛ рд╣реИ
"рдореВрд▓-рдЖрдзрд╛рд░": "^ 2.3.3",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.0.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.50.3",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-fcm": "^ 10.0.3"

@ рд╢реНрд░рд╡реНрдп рдкрд░рдорд╛рдгреБ
+1
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.49.3",
рдкрд╣рд▓реА рдмрд╛рд░ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ред

рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ ??

@ рдбреЗрдВрдЯрдореИрди рдореИрдВрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдореБрджреНрджрд╛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рд╕реЗред

рдПрдХрдорд╛рддреНрд░ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдЬреЛ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдХрд┐рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рджрд╛рдВрд╡ рд▓рдЧрддрд╛ рд╣реИред

рд░рд┐рдмреЗрдХрд╛рд╣реБрдШреЗрд╕ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА # 260 рдореЗрдВ RNDeviceInfo рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдВрджреЗрд╢ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдмрдЧ RCTDevLoadingView рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рддреЛ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкреЙрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд▓рдЧрд╛рддреЗ рд╣реИрдВ:

RCTLogWarn(@"RCTBridge required dispatch_sync to load %@. This may lead to deadlocks", _moduleClass);

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ RCTDevLoadingView рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдореЙрдбреНрдпреВрд▓ / рд╕реНрдЯреИрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдпрд╣ RCTCxxBridge.mm рдерд╛ рдЬреЛ рд░рд┐рдореЛрдЯ рдмрдВрдбрд▓ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ RCTDevLoadingView рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рдЧрддрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ:

... onProgress:^(RCTLoadingProgress *progressData) {
#if RCT_DEV && __has_include("RCTDevLoadingView.h")
      RCTDevLoadingView *loadingView = [weakSelf moduleForClass:[RCTDevLoadingView class]];
      [loadingView updateProgress:progressData];
#endif
    }];

рдпрд╣рд╛рдБ RCTCxxBridge moduleForClass рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХрд┐ рдпрджрд┐ рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рддреЛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЛрдб рдХрд░реЗрдЧрд╛ред onProgress рдмреНрд▓реЙрдХ RCTDevLoadingView рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрддрд╛рд░ рдХреЗ рдХрд╛рд░рдг рдЧреИрд░-рдореБрдЦреНрдп рдХрддрд╛рд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ RCTDevLoadingView рдХреЛ рдПрдХ рдореБрдЦреНрдп-рдкрдВрдХреНрддрд┐ рд╕реЗрдЯрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореИрдВ рдЕрдкрдиреЗ RCTBridgeDelegate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рдХрд░ RCTDevLoadingView рдХреА рдЪреЗрддрд╛рд╡рдиреА рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
- (NSArray<id<RCTBridgeModule>> *)extraModulesForBridge:(RCTBridge *)bridge;

рдореИрдВ AppDelegate.m рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.50.4
рд╡рд╣реА рдореБрджреНрджрд╛...

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.51.0
рд╡рд╣реА рдореБрджреНрджрд╛...

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.2.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.52.0",
рд╡рд╣реА рдореБрджреНрджрд╛...

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.2.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.51.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА": "0.13.0"

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдБ рдлрд▓реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдерд╛ред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреЙрдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдмрд╕реНрдкреЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ CxxBridge рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд▓реА (рдФрд░ рдЗрд╕рд▓рд┐рдП рдмреВрд╕реНрдЯ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдкреВрд░рд╛ рд╕реЗрдЯрдЕрдк рдмреЛрдЭрд┐рд▓ рд╣реИ / рд▓рдВрдмреЗ рд╕рдордп рд▓реЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдЬреЛ рдлрд▓реА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреЛрдИ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рдЬрд╛рдирдХрд╛рд░реА" рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ:
0.54.2 рдореЗрдВ рдореМрдЬреВрдж рд╣реИ:

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.3.0-рдЕрд▓реНрдлрд╛.2",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.54.2",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдХреНрд░рд┐рдпрд╛-рдмрдЯрди": "^ 2.8.4",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдХреЙрдореНрдмреЛрдм": "^ 2.0.0-beta.4",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдирд┐рдореЗрдЯреЗрдмрд▓": "^ 1.2.4",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рднрдпрд╛рдирдХ-рдЕрд▓рд░реНрдЯ": "^ 1.0.7",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рддрддреНрд╡": "^ 0.19.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-fbsdk": "^ 0.7.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд░реИрдЦрд┐рдХ-рдврд╛рд▓": "^ 2.4.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд▓рдВрдмрди-рд╕реНрдХреНрд░реЙрд▓-рджреГрд╢реНрдп": "^ 0.21.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдлреЛрдЯреЛ-рдЧреНрд░рд┐рдб": "0.0.2",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрддреНрддрд░рджрд╛рдпреА-рдЖрдпрд╛рдо": "^ 1.0.2",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд╕реНрдиреИрдк-рд╣рд┐рдВрдбреЛрд▓рд╛": "^ 3.6.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡реЗрдХреНрдЯрд░-рдЖрдЗрдХрди": "^ 4.5.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди": "^ 1.5.7"

рдпрд╣ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдПрдХреНрд╢рди-рдмрдЯрди" рдХреЗ рд╕рд╛рде рдерд╛: "^ 2.8.4", shadowStyle={{shadowOpacity: 0.9}} рдЬреЛрдбрд╝рдирд╛ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБред

рд╡рд╣реА рдореБрджреНрджрд╛ред
рдЖрд░рдПрди 0.54.4

рдХрд┐рд╕реА рдХреЛ рд╣рд▓ рдорд┐рд▓ рдЧрдпрд╛?

рддреНрд░реБрдЯрд┐ рд╣реМрд╕рд▓реЗ / рдирд╡ рдирд┐рд░реНрдорд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рднреА рдЖрддреА рд╣реИред

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.3.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.54.4"

рд╡рд╣реА

+1

@antoinificseau рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрджреНрдпрддрди?

рдореИрдВ @devburmistro рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐, рдЬрд╣рд╛рдВ рдпрд╣ рдЬреЛрд░рджрд╛рд░ рддреНрд░реБрдЯрд┐ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╕реЗ рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрдЧреАред

рдореЗрд░рд╛ рд╕реЗрдЯ рдЕрдк:

react-native-cli: 2.0.1
react-native: 0.53.0

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЦрд░реЛрдВрдЪ рд╕реЗ рдЕрдкрдиреЗ рд░реЗрдкреЛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╢реБрджреНрдз js рдХреЛрдб рд╡рд╛рдкрд╕ рд╡рд╣рд╛рдБ рдореЗрдВ рдбрд╛рд▓рдиреЗред рдкрд┐рдЫрд▓реЗ рдФрд░ рдЗрд╕ рдирдП рд░реЗрдкреЛ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдореИрдВ рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреЛрдИ рднреА рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдореЗрд░реЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рдареАрдХ рдмрд╛рдж рдпрд╣ рд╣реБрдЖ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдХрд▓рдВрдХ

рдПрдХ рд╢реЗрдпрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреГрд╢реНрдп рдХреЗ рднреАрддрд░, рдиреЗрд╕реНрдЯреЗрдб

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-modalbox

@ рдЬрдм рдЖрдк рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЖрдк рдПрдХ рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдорд╛рдлрд╝ рдХрд░рдирд╛ред рдореИрдВ рд╢реЗрдпрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреГрд╢реНрдп рд╕реЗ рд▓реЙрдЧ / рдХрдВрд╕реЛрд▓ рдХреЛ рдбреАрдмрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдРрдкред

+1

рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдореБрджреНрджрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝, v0.55 рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдмреЙрдЯ рдореБрджреНрджрд╛ рдЕрднреА рднреА рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.55 рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ

@ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдмреЙрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рдореИрдВ 0.50.4 рдФрд░ 0.55.4 рд╕рдВрд╕реНрдХрд░рдг рдЖрдЬрд╝рдорд╛рддрд╛ рд╣реВрдВ

рдмрд╕ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ 0.55.3 рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдПрд╕рд╡реАрдЬреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ рдкреЙрдк рдЕрдк рд╣реБрдЖред

screen shot 2018-05-30 at 16 04 07

рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдЬрд╛рд░реА рд╣реИ:

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдХреНрд▓рд┐: 2.0.1
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.55.4

рдореИрдВ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирдП рдирдП рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдЯреАрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ Firebase рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЗрдВрдЬреЗрдХреНрд╢рди рд╣реИрдВред
рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: 16.3.1
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.55.4
рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдХрд╛рд░рдг рдерд╛ рдЬрдм рдореИрдВрдиреЗ Xcode рд╕реЗ рдмрд┐рд▓реНрдб рд░реАрд░рди рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ рдмрд╕ рдЯрд░реНрдорд┐рдирд▓ рдФрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдмрд┐рд▓реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рдпрд╣ рдореБрджреНрджрд╛ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рд╕реВрдЪрдирд╛ рднреА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдкреАрд▓рд╛ рд╕рдВрджреЗрд╢ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ: 'RCTBridge рдХреЛ RCCManagerModule рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП dispatch_sync рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...'

рдореИрдВ рдХрд╣рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рддрдм рдорд┐рд▓реА рд╣реИ рдЬрдм рдореИрдВ рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдпрд╛ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП style рдкреНрд░реЛрдк рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдкрд░ map рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд▓рдЧрддреА рд╣реИред

OS11 рдкрд░ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡реЗрдХреНрдЯрд░-рдЖрдЗрдХрди

рдореИрдВ рдпрд╣рд╛рдБ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдБ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡реЗрдХреНрдЯрд░-рдЖрдЗрдХреЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдбрд┐рд╡рд╛рдЗрд╕-рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрдирд▓рд┐рдВрдХ рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдЕрдм рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡реЗрдХреНрдЯрд░-рдЖрдЗрдХрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛, рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдЪрд▓реА рдЧрдИред

FYI рдХрд░реЗрдВ, рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЖрдЬ рджреВрд░рд╕реНрде рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рдкреБрдирдГ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреАред рд░рд┐рдореЛрдЯ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдпрд╛, рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВред рд░рд┐рдореЛрдЯ рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛, рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдпрд╛, рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВред

FYI рдХрд░реЗрдВ, рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЖрдЬ рджреВрд░рд╕реНрде рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рдкреБрдирдГ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреАред рд░рд┐рдореЛрдЯ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдпрд╛, рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВред рд░рд┐рдореЛрдЯ рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛, рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдпрд╛, рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВред

~ @ рдореЛрдХрд░реАрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдбрд┐рдмрдЧрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреБрд▓реЗ рдбрд┐рдмрдЧрд░ рдЯреИрдм рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдПрдореБрд▓реЗрдЯрд░ / рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рдмреАрдЪ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

рдирд╣реАрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ

iOS 12, RN 0.57.0 рдПрдХ рд╣реА рдореБрджреНрджрд╛ред

рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ?
рдпрд╛ рдЙрдкреЗрдХреНрд╖рд╛ рд╣реИ?

import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['RCTBridge']);

рд╣рд╛рдВ, рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡реАрдбрд┐рдпреЛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдпрд╣ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рд╕рднреА рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпреЛрдВ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдо рдЕрдкрдиреЗ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдЪреВрдХ рд░рд╣реЗ рд╣реИрдВ?

IOS 12.1 рдкрд░ рд╕рдорд╛рди рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдмрд┐рдирд╛ react-native-device-info RN 0.57.4

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдореБрджреНрджрд╛ рд╣реИ

"lodash": "^4.17.10",
"react": "16.4.1",
"react-native": "0.56.0",
"react-native-check-box": "^2.1.0",
"react-native-collapsible": "^1.2.1",
"react-native-elements": "^0.19.1",
"react-native-google-analytics-bridge": "^5.8.0",
"react-native-google-places-autocomplete": "^1.3.9",
"react-native-map-clustering": "^1.3.0",
"react-native-maps": "^0.21.0",
"react-native-masked-text": "^1.7.2",
"react-native-modal-picker": "0.0.16",
"react-native-onesignal": "^3.2.8",
"react-native-simple-radio-button": "^2.7.2",
"react-native-svg": "^8.0.0",
"react-native-ui-kitten": "^3.0.1",
"react-native-vector-icons": "^5.0.0",
"react-navigation": "^2.11.2",
"rn-sliding-up-panel": "^1.2.1",
"victory-native": "^30.5.0"

IOS рдореЗрдВ "RCTBev рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ Xcode рдореЗрдВ Project -> Clean рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреБрдирдГ рдЪрд▓рд╛рдПрдВред

рдореИрдВрдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИ рдХрд┐ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рд╕рдорд╛рдзрд╛рди рд╣реИред рдереИрдВрдХ рдпреВ @mattijsf!

рдЕрдкрдиреЗ RCTBridgeDelegate рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдФрд░ extraModulesForBridge рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред

рдЙрджреНрджреЗрд╢реНрдп рд╕реА

<strong i="11">@interface</strong> MyBridgeDelegate : NSObject <RCTBridgeDelegate>
<strong i="12">@end</strong>

<strong i="13">@implementation</strong> MyBridgeDelegate

- (NSArray<id<RCTBridgeModule>> *)extraModulesForBridge:(RCTBridge *)bridge
{
  return @[
#if RCT_DEV
    [bridge moduleForClass:[RCTDevLoadingView class]],
#endif
  ];
}

<strong i="14">@end</strong>

рд╕реНрд╡рд┐рдлреНрдЯ 4

class MyBridgeDelegate: NSObject, RCTBridgeDelegate {
  func extraModules(for bridge: RCTBridge!) -> [RCTBridgeModule]! {
    var modules: [Any]! = []
    if RCT_DEV == 1 {
      modules.append(bridge.module(for: RCTDevLoadingView.self))
    }
    return modules as? [RCTBridgeModule]
  }
}

IOS12, RN 0.57.8 рдкрд░ рд░реЗрдкреНрд░реЛ

image
рдореЗрд░реА рдирд┐рд░реНрднрд░рддрд╛, рд╡рд╣реА рдореБрджреНрджрд╛

@aleclarson рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХрд╛ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

@ccorcos рдпрд╣ RCTDevLoadingView рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ RN рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддреА рд╣реИред

рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдЖрд░рдПрди 0.57.8 + iOS 11.3 (рдХрдо рд╕реЗ рдХрдо) рдХреЗ рд╕рд╛рде рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдореИрдВ рдКрдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдмрджрд▓рд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ @devburmistro рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛

рдЖрд░рдПрди 0.58.3
iOS 11.4, 12.1

рдФрд░ рдпрд╣ рдЧрддрд┐рд░реЛрдз рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдХрд╕реНрдЯрдо рдореЛрдбрд▓ рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд╣реВрдВ

рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ 0.57.8 рдкрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдареАрдХ рдерд╛

рдпрд╣рд╛рдБ, RN 0.58.3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдореЗрд░реА рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рд╣реИ: Unable find module for DevLoadingView , рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

screen shot 2019-01-30 at 0 54 04

рдЗрд╕ рдкреНрд░рддрд┐рдмрджреНрдз рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд░рдПрди 0.58.3 рдкрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ

https://github.com/facebook/react-native/commit/d7a0c44590bcf3fb9d055aeae3391d5bcd7e21be#diff -a2a67635ff776dd1417cc17ae563a71

рдореИрдВ рдЖрдЬ рдЖрд░рдПрди 0.53.3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж @oferRounds рдХреЗ рд░реВрдк рдореЗрдВ "DevLoadingView рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде" рд╕рдорд╛рди рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЬрдм рдХреЛрдИ рдРрдк рдкрд╣рд▓реА рдмрд╛рд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рд▓реЛрдб (cmd-R) рддреНрд░реБрдЯрд┐ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

EDIT: рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рджрд╛рдпрд░ рдХрд┐рдпрд╛: # 23235

рдореИрдВ рдпрд╣ рднреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА 0.58.3 рдХреЗ рд╕рд╛рде рдЖрдИрдУрдПрд╕ рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рд╣реИред

рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд▓реЛрдХрди:

  • рдЬреИрд╕рд╛ рдХрд┐ @superguineapig рдиреЗ рдХрд╣рд╛, рдРрдк рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
  • рдпрджрд┐ рдЖрдк рд╕рднреА рдЯрд░реНрдорд┐рдирд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдРрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ / рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ _not_ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдкреИрдХреЗрдЯ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ Xcode рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рддреНрд░реБрдЯрд┐ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдХрд┐ рдРрдк рдлрд┐рд░ рд╕реЗ рдкреИрдХрдЧрд░ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред

_Edit: рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЕрднреА рднреА рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ ред_

рдореИрдВ AppDelegate.m рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрд╕реНрдЯрдо RCTBridgeDelegate рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ? рдЖрдкрдХреЛ bridgeManagerDelegate рдкрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдЯреВрдЯрд╛ рд╣реБрдЖ рд▓рдЧрддрд╛ рд╣реИ ( extraModulesForBridge рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ RCTBridge рд╣рдореЗрд╢рд╛ nil )ред

рдЖрд░рдПрди 0.58.6 рдФрд░ рдЖрдИрдУрдПрд╕ 12 рдкрд░ react-native-device-info рдЬреЛрдбрд╝рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред

рдареАрдХ рд╣реИ, рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА 0.59.1

рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЙрдкрдХрд░рдг-рд╕реВрдЪрдирд╛ рдФрд░ рд╕рд╛рде рд╣реА рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ?

рдореИрдВ рдЗрд╕реЗ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВрдиреЗ рдЖрд░рдПрди 0.57.8 рд╕реЗ 0.59.5 рдХреЗ рдЙрдиреНрдирдпрди рдореЗрдВ, рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЖрд╡рд╢реНрдпрдХ) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдкрдиреЗ рдРрдк рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рд╣реИ CodePush, 2 рдпрд▓реЛрдмреЙрдХреНрд╕ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде:

RCTBridge required dispatch_sync to load CodePush. This may lead to deadlocks
рддрдерд╛
Required dispatch_sync to load constants for CodePush. This may lead to deadlocks

рдпрд╣ рдореБрджреНрджрд╛ рд▓рдВрдмрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдХрд╛рд░рдг рдЕрднреА рднреА рдПрдХ рд░рд╣рд╕реНрдп рд╣реИ? рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреМрди рд╕реА рдЕрдиреНрдп рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред


рдореЗрд░рд╛ рдкреИрдХреЗрдЬред рд╕рдВрджреЗрд╢:

{
  "name": "wonderswipe",
  "version": "0.0.1",
  "private": true,
  "eslintConfig": {
    "parserOptions": {
      "ecmaVersion": 7,
      "sourceType": "module",
      "ecmaFeatures": {
        "jsx": true
      }
    },
    "env": {
      "browser": false,
      "node": true
    },
    "plugins": [
      "react",
      "react-native",
      "react-hooks"
    ],
    "rules": {
      "comma-dangle": [
        2,
        "always-multiline"
      ],
      "semi": [
        2,
        "never"
      ],
      "react-native/no-unused-styles": 2,
      "react-native/split-platform-components": 2,
      "react-hooks/rules-of-hooks": "error"
    }
  },
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "postinstall": "patch-package"
  },
  "dependencies": {
    "@postlight/mercury-parser": "^2.0.0",
    "@react-native-community/async-storage": "^1.3.3",
    "@react-native-community/viewpager": "^1.1.6",
    "babel-plugin-idx": "^2.4.0",
    "buffer": "^5.2.1",
    "he": "^1.1.0",
    "idx": "^2.5.5",
    "lodash": "^4.17.2",
    "moment": "^2.19.0",
    "moment-timezone": "^0.5.10",
    "node-summary": "../node-summary",
    "react": "16.8.3",
    "react-native": "^0.59.4",
    "react-native-actionsheet": "^2.4.2",
    "react-native-blur": "^3.2.0",
    "react-native-cached-image": "../react-native-cached-image",
    "react-native-cheerio": "^1.0.0-rc.4",
    "react-native-code-push": "^5.3",
    "react-native-custom-tabs": "^0.1.7",
    "react-native-easy-toast": "^1.0.9",
    "react-native-firebase": "^5.3.1",
    "react-native-fit-image": "^1.4.8",
    "react-native-flanimatedimage": "^0.4.0",
    "react-native-highlight-words": "^1.0.1",
    "react-native-keep-awake": "^4.0.0",
    "react-native-linear-gradient": "^2.0.0",
    "react-native-modal-dropdown": "^0.6.2",
    "react-native-modalbox": "^1.6.0",
    "react-native-orientation": "^3.1.3",
    "react-native-parallax-scroll-view": "../react-native-parallax-scroll-view",
    "react-native-rate": "^1.0.8",
    "react-native-safari-view": "^2.0.0",
    "react-native-sentry": "^0.42.0",
    "react-native-sha256": "^1.1.1",
    "react-native-status-bar-size": "^0.3.2",
    "react-native-swiper": "^1.5.14",
    "react-native-tooltip": "^5.2.0",
    "react-native-tts": "^3.0.0",
    "react-native-vector-icons": "^6.4.2",
    "react-native-webview": "^5.7.0",
    "react-native-webview-bridge": "^0.40.1",
    "react-redux": "^7.0.1",
    "redux": "^4.0.0",
    "redux-thunk": "^2.1.0"
  },
  "devDependencies": {
    "babel-eslint": "^10.0.1",
    "eslint": "^5.15.1",
    "eslint-plugin-react": "^7.12.4",
    "eslint-plugin-react-hooks": "^1.0.1",
    "eslint-plugin-react-native": "^3.6.0",
    "patch-package": "^6.1.2",
    "postinstall-postinstall": "^2.0.0",
    "redux-logger": "^3.0.6"
  },
  "resolutions": {
    "babel-core": "7.0.0-bridge.0"
  }
}

image

рдореИрдВрдиреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ @grossingdev рдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рддрдп рдХреАред рд▓реЗрдХрд┐рди 0.59.8 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рдпрд╣ рддреНрд░реБрдЯрд┐ рдлрд┐рд░ рд╕реЗ рдЖрдИ рд╣реИ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.59.3 рдкрд░, рдпрд╣рд╛рдБ рдХреЛрдб рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  #if RCT_DEV
    [bridge moduleForClass:[RCTDevLoadingView class]];
  #endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"YourAppName"
                                            initialProperties:nil];

AppDelegate.m рдлрд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реБрдП ios App рдореЗрдВ react-native-maps рдЧреВрдЧрд▓ рдореИрдк рдХреЛ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯ рдХрд░рддреЗ рд╣реБрдПред
"react-native": "0.59.5"

рдореЗрд░реЗ рд▓рд┐рдП - рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ ---
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.8.3",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.59.9",
AppDelegate.m рдлрд╝рд╛рдЗрд▓

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
//  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
//                                                   moduleName:@"mobileapp"
//                                            initialProperties:nil];


  NSURL *theurl ;
#if DEBUG
  theurl = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  theurl = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif

  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:theurl
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"mobileapp"
                                            initialProperties:nil];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  return YES;
}

@ amitkumar3968 рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдВ

рдореБрдЭреЗ рдмрд╕ рдРрд╕реА рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:
Screenshot 2019-07-23 at 10 27 04


рдореЗрд░рд╛ рдкреИрдХреЗрдЬред json:

{
  "name": "auth",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "firebase": "^6.3.1",
    "react": "16.8.6",
    "react-native": "0.60.0"
  },
  "devDependencies": {
    "@babel/core": "7.5.0",
    "@babel/runtime": "7.5.0",
    "@react-native-community/eslint-config": "0.0.3",
    "babel-jest": "24.8.0",
    "eslint": "6.0.1",
    "jest": "24.8.0",
    "metro-react-native-babel-preset": "0.54.1",
    "react-test-renderer": "16.8.6"
  },
  "jest": {
    "preset": "react-native"
  }
}

рд░рд┐рд▓реЛрдб рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХреБрдЫ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ рдбреАрдмрдЧрд░ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реВрдВред рдкрд░рдлреЗрдХреНрдЯ рдореЙрдирд┐рдЯрд░ рдХреЛ рдЦреЛрд▓рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд░реИрдо рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж to 100MB рд╕реЗ, 300MB рддрдХ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде:
Screen Shot 2019-07-25 at 9 07 45 AM

рдбрд┐рдмрдЧрд░ рдХреЗ рдмрд┐рдирд╛:
Screen Shot 2019-07-25 at 9 08 09 AM

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб рдореЗрдВ рдРрдк рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧреАред

рдКрдкрд░ рджрд┐рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рд╕рд╛рде рд╣реА рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.59.10 рдкрд░ рд╣рд▓ рдХрд┐рдпрд╛:

diff --git a/ios/Foo/AppDelegate.m b/ios/Foo/AppDelegate.m
index e446e79..2c28719 100644
--- a/ios/Foo/AppDelegate.m
+++ b/ios/Foo/AppDelegate.m
@@ -18,6 +18,11 @@

#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

+// https://github.com/facebook/react-native/issues/16376#issuecomment-350523177
+#if RCT_DEV && __has_include(<React/RCTDevLoadingView.h>)
+#import <React/RCTDevLoadingView.h>
+#endif
+
 <strong i="7">@implementation</strong> AppDelegate

@@ -39,6 +44,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(

   RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
+
+  // https://github.com/facebook/react-native/issues/16376#issuecomment-350523177
+  #if RCT_DEV && __has_include(<React/RCTDevLoadingView.h>)
+  [bridge moduleForClass:[RCTDevLoadingView class]];
+  #endif
+
   RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"Foo" initialProperties:nil];
   rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдЕрдВрддрд░ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рддрд░реНрдХ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ ( RCT_DEV && __has_include(<React/RCTDevLoadingView.h>) рд╣рд┐рд╕реНрд╕рд╛) ...

рдмрд╕ react-native-firebase рд╕рд╛рде 2 рдорд┐рд▓рд╛ред рдХрднреА-рдХрднрд╛рд░ рд╣реА рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди:
image
image

рдореИрдВ рдЕрдкрдиреА рдирдИ рдмрдирд╛рдИ рдЧрдИ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ Images.xcassets/AppIcon.appiconset рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.61.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдХреЛрдб рдЙрд▓реНрд▓реЗрдЦ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА 0.59.10
рд╡рд╣реА рдореБрджреНрджрд╛ред

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛ !! рдХрд┐рд╕реА рднреА рд╢рд░реАрд░ рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛?

рдореИрдВ AppDelegate.m рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ред рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдХреЛрдб рдШрдЯрдХ рдХреЗ рдмреНрд▓реЙрдХ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рд▓реЗрдХрд┐рди рд▓реЗрдХрд┐рди рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрдВрдкреЛрдиреЗрдВрдЯрдбреНрдпреВрдкрдбреЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдкрд╣рд▓реЗ: рдпрджрд┐ рдЖрдк рдПрдХ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ Xcode, рд╕рд╛рдорд╛рдиреНрдп Xcode рдЙрддреНрддрд░ рдЦреЛрд▓реЗрдВ: рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдЬрдм рдЖрдк macOS рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП Xcode рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛

рдореИрдВ AppDelegate.m рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

@grossingdev jsCodeLocation рдХреНрдпрд╛ рд╣реИ? рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ URL рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдмрд╕ react-native-firebase рд╕рд╛рде 2 рдорд┐рд▓рд╛ред рдХрднреА-рдХрднрд╛рд░ рд╣реА рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди:
image
image

Firebase рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдорди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛? @ рдлреБрдлрдХрд╛рд░рдирд╛

@ abdi4 рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рд╣реИ?

@zloka рдирд╣реАрдВ рдпрд╣ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдФрд░ im рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ

рдЗрд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ

import { YellowBox } from 'react-native';

YellowBox.ignoreWarnings([
    'RCTBridge'
]);

рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрдарддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рдлрд┐рдХреНрд╕ рдЬрдм рднреА рдпрд╣ рд╣реЛрддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдРрдк рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИред

рд╕реНрд╡рд┐рдлреНрдЯ рд╕рдорд╛рдзрд╛рди:

рдЪрд▓реЛ рдкреБрд▓ = RCTBridge (рдмрдВрдбрд▓рд▓реЗрд░: jsCodeLocation, рдореЙрдбреНрдпреВрд▓рдкреЙрдЗрдбрд░: рдиреАрд▓, рд▓реЙрдиреНрдЪрд░: рдиреАрд▓
#if RCT_DEV
рд╕реЗрддреБред
#рдЕрдЧрд░ рдЕрдВрдд
рд░реВрдЯ рд╡реНрдпреВ = RCTRootView (рдкреБрд▓: рдкреБрд▓ !, рдореЙрдбреНрдпреВрд▓рдирд╛рдо: "AppMain", initialProperties: nil)

рдЕрд░реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреНрдпрд╛ рдореБрджреНрджрд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдЕрднреА рднреА рд╕рдореБрджрд╛рдп рдХреЗ рдзреНрдпрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рди рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрдВрдж рд╣реЛ рд╕рдХрддреА рд╣реИред рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдЪрд░реНрдЪрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд▓реЗрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ "рдмреИрдХрд▓реЙрдЧ" рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЕрд░реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреНрдпрд╛ рдореБрджреНрджрд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдЕрднреА рднреА рд╕рдореБрджрд╛рдп рдХреЗ рдзреНрдпрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рди рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрдВрдж рд╣реЛ рд╕рдХрддреА рд╣реИред рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдЪрд░реНрдЪрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд▓реЗрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ "рдмреИрдХрд▓реЙрдЧ" рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣рд╛рдВ рдЖрдкрдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИред рддрд╛рдЬрд╛ рдирдП рдРрдк рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рд╣реИред

@sospedra рдЖрдк рдХрд┐рд╕реА рднреА рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрдиреЗ рдХрд╛ рд░реЗрдкреЛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ рдХреЛ рджрд╛рдпрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

0.63.2 рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ, рдпрд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдХрднреА-рдХрднреА рдРрдк рдХреЗ рд╕рднреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╕рдорд╛рди рдЪреЗрддрд╛рд╡рдиреА рдХреЗрд╡рд▓ рдореЗрдЯреНрд░реЛ (рдореИрдиреБрдЕрд▓) рд░реАрд▓реЛрдб рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдореИрдХреЛрд╕ рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИ, рди рдХрд┐ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрдбреЗрдЯ рдкрд░, рдФрд░ рдЖрдИрдУрдПрд╕, рдПрдВрдбреНрд░реЙрдЗрдб рдпрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред
NB: рдореЗрд░реЗ рд▓рд┐рдП RN 0.62.2 рдХреЗ рд╕рд╛рде

рдПрдХ рдЙрддреНрдкреНрд░реЗрд░рдХ рдРрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реАред

рдореИрдВрдиреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдореЗрдЯреНрд░реЛ рдХреЛ рдорд╛рд░ рдбрд╛рд▓рд╛, XCode рдореЗрдВ build and run рдЪреЗрддрд╛рд╡рдиреА рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ!

рдореЗрдЯреНрд░реЛ рдмрдВрдбрд▓ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдФрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╕реЗ рдРрдк рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЧрд╛рдпрдм рдХрд░ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдардЧ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреАред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lazywei picture lazywei  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

janmonschke picture janmonschke  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

grabbou picture grabbou  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

WG-Com picture WG-Com  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TrakBit picture TrakBit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ