2.5.0 (2021-08-06)
After 14 beta versions it's finally here! 🥳🥳🥳🥳 2.5.0 includes A LOT of features and improvements. The highlights of this release are:
- 💪 Frame Processors are now stable on iOS and Android
- 🎉 VisionCamera now runs in Expo (EAS) apps!
Note: The android/
codebase now contains C++ code, which uses JNI. If you haven't already, you need to install the NDK plugin in Android Studio to build your app. (I think that's installed by default anyways, but double check if you have build issues)
✨ Features
- Frame Processors for Android (#196) (87e6bb7)
- Expo support (#260) (d3a8b49)
- Support rotation (#301) (ef455df)
- Add
console
logging support for Frame Processors (#297) (0f7ee51) - Add support for calling other functions using
runOnJS
inside Frame Processors (#297) (0f7ee51) - Automatically fall back to snapshot capture when the Camera cannot attach the photo-use-case (#196) (87e6bb7)
- Add flash for snapshot capture (#196) (87e6bb7)
- Print Frame Processor errors to Metro console (4bacee7)
- Implement
Frame.close()
(#229) (fa5f5c0) - Make
videoWidth
andvideoHeight
available on all devices (5126dd6) - Correctly get
videoDimensions
on devices below iOS 13 (c078cdf) - Add
device/parallel-video-processing-not-supported
error (#196) (87e6bb7) - Add the
supportsParallelVideoProcessing
prop toCameraDevice
(See ThesupportsParallelVideoProcessing
prop) (#196) (87e6bb7)
💨 Performance Improvements
- Avoid error message copying (da84a0f)
- clean up delay code (f1a9366)
- Remove a few unnecessary log statements (26d19d5)
- Avoid expensive CMSampleBuffer copy (#235) (7d3b352)
🐛 Bug Fixes
- Fix
format
Preview and Video Capture resolution setting (#325) (37db643) - Throw JS errors if JSI <-> JNI conversion failed (#324) (1c32726)
- Host Object error (e13bef7)
- patch-package install error (4a1fc1d)
- Rename incorrect error type name
parallel-video-processing-not-supported
(0ea633d) - Fix autolinking for android (#231) (9dad027)
- Remove patch-package (d54358a)
- Frame Processor not setting on first render (b10b2c1)
- Delay frame processor setting on Android by 300ms (2f95ecc)
- React Native 0.65 compatibility (#230) (0f0f1fb)
- Run
setFrameProcessor
after interactions have completed (4baf584) - Fix unset Frame Processor not being called (9b645a8)
- Correctly propagate Errors in
configureSession()
(f07f4a8) - Log errors in
update
andconfigureSession
(f1a5ee7) - Report all errors to JS in
configureSession
(f80e606) - Add more logs (45fad5a)
- print stacktrace on error (359fd00)
- Add
@Keep
annotation to prevent minifier from deleting java funcs (3007cd9) - Distribute Android code as source (#234) (b2f3c08)
- Fix hot-reload crash caused by Frame Processor Runtime being initialized twice (#258) (2f889f5)
- Fix lint error for missing JNI func (1730ce8)
- Fix lint error for missing JNI func (2) (91e81d7)
- Fix lint error for missing JNI func (3) (7a5e879)
- Fix wrong HDR error being thrown on LowLight mode (339b470)
- Only extract either JSC or Hermes REA .aar (66f22d7)
- TS error (0691149)
- Fix
app.plugin.js
not being included in npm package (e8a9a43) - Fix "
REACT_NATIVE_UTILS_LIB
not found" build error (#295) (5eaed05) - Fix expo plugin import path (61cef75)
- Fix UI Thread race condition in
setFrameProcessor(...)
(#265) (4b4ea0f) - Remove
RCTTurboModuleBlockCopyEnabled()
(d923320) - Fix
java.lang.NoSuchMethodError
error for.toArrayList()
(#322) (b493576) - Fix dead link in
parallel-video-processing-not-supported
error (aaecb90) - Fix hard-crashing the app if any errors are thrown while configuring the Android session (throw in JS instead) (#196) (87e6bb7)
📚 Documentation
- Update documentation titles (08d04d1)
- Add link to Frame Processors to README (03cd0bb)
- Emphasize "video processing" (ff892c2)
- Fix confusing wording (949c44a)
- Link to Worklets docs (1646bb5)
- Re-order Frame Processor docs (18e0d3e)
- Remove outdated "use-cases" docs (0bb9ba1)
- Shorten code sample (9491490)
- Update "The Frame object" docs (b39b380)
- Update expo getting started docs (b40d3dd)
- Update expo install docs (a4397e1)
- Update Frame Processor Technical docs (0f6d097)
- Use Hotdog/Not Hotdog as sample (db0baae)
- Explain Frame Processor benefits more (cf68a4c)
- Update Android TROUBLESHOOTING (63cc806)
- Use Java in FPP "Overview" for simplicity (#266) (6f10188)
- Make Feature Request an issue template (f840ce2)
- Add examples for
supportsParallelVideoProcessing
(070d007) - Improve
CameraDevices
documentation (b8b1a5c) - Add documentation for Creating Frame Processors for Android (#196) (87e6bb7)
- Add documentation for the new
supportsParallelVideoProcessing
prop (#196) (87e6bb7) - Update the Java types for Frame Processor Plugins (#196) (87e6bb7)
- Create an Example FP Plugin instead of the empty-promise QR code scanner (#196) (87e6bb7)
🔨 Other Changes
- Automatically enable
video
on iOS if aframeProcessor
is set instead of throwing an Error (#196) (87e6bb7)
🔨 Breaking Changes
- Remove
supportsPhotoAndVideoCapture
in favor ofsupportsParallelVideoProcessing
prop (See ThesupportsParallelVideoProcessing
prop) (#196) (87e6bb7) - Express
zoom
factor always in actual factor value (1, 2, 128, ...) instead of 0.0-1.0 scale (#306) (445af94)