Skip to content

Changelog ​

0.97.0 ​

  • Swift: RKMouseEvent.targetsCurrentProcess is now correct when keyboard input is recorded as well

0.96.0 ​

  • Swift: Add signals for conditions that need attention but don't end a recording, via onSignalsChanged on RKRecorder init and setSignalsHandler(_:)
  • Swift: Add lowDiskSpace signal, raised when free disk space drops below diskSpaceWarningLevel
  • Swift: Renamed minimumFreeDiskSpaceToPrepareRecording to diskSpaceWarningLevel and minimumFreeDiskSpace to diskSpaceAbortLevel on RKRecorder.Settings
  • Electron: Add signals event to Recorder and rename disk space settings to diskSpaceWarningLevel and diskSpaceAbortLevel

0.95.0 ​

  • Fix RKWindow resize, move, center and maximize failing for Chrome windows

0.94.1 ​

  • Fix microphone audio drifting out of sync when another app (e.g. FaceTime) takes over the microphone

0.94.0 ​

  • Swift: Core Audio backend now records all subprocesses in the bundle ID namespace of the selected app, fixing missing Microsoft Teams meeting audio
  • Swift: Core Audio backend now includes or excludes processes that start during the recording
  • Fix Core Audio backend recording silence on output devices that also have inputs

0.93.0 ​

  • Swift: Add minimumFreeDiskSpace and minimumFreeDiskSpaceToPrepareRecording to RKRecorder.Settings to abort recordings when disk space runs low
  • Swift: Add RKError.Code.insufficientDiskSpace
  • Electron: Add minimumFreeDiskSpace and minimumFreeDiskSpaceToPrepareRecording to RecorderSettings
  • Swift: Compensate microphone attenuation when another app (e.g. FaceTime) uses voice processing, instead of refusing to record
  • Fix wrong-speed system audio with Core Audio backend when output device uses a different sample rate (e.g. Bluetooth headsets)

0.92.1 ​

  • Fix RKWindow operations failing repeatedly after an earlier error

0.92.0 ​

  • Swift: Add driver property to RKCamera
  • Swift: manufacturer and modelID on RKCamera now update live for virtual cameras

0.91.0 ​

  • Fix audio drift for microphones with more than two channels (e.g. Focusrite Vocaster, aggregate devices)
  • Fix incorrect orientation tracking for downscaled iPad recordings
  • Fix last frames of Apple device recordings being dropped

0.90.0 ​

  • Electron: API now on par with Swift, adding discovery, permissions, window control, camera format selection, all schema items and outputs, input events, echo cancellation, background blur and log events
  • Fix recording hanging on stop after a long microphone gap (e.g. Mac sleeping during a recording)
  • Fix audio playing early after a long microphone gap

0.89.0 ​

  • Swift: Remove _useTimeline setting from RKRecorder.Settings, timeline is now always used
  • Swift: Add F20-F24, media, volume and brightness keys to RKKeyboardKeyType
  • Swift: Add cross-platform cursor types to RKCursorType
  • Swift: Refuse to record the built-in MacBook microphone while a FaceTime call makes it capture silence
  • Improved background blur performance
  • Fix RKMicrophonePreview under-reporting peak levels

0.88.3 ​

  • Fix background blur failing after switching cameras

0.88.2 ​

  • Swift: RKLogger is now Sendable
  • Fix mirroring on DJI Osmo Pocket 3 on macOS 15

0.88.1 ​

  • Fix crash in Center Stage camera workaround when multiple camera previews or recordings start at the same time

0.88.0 ​

  • Swift: Add backgroundBlur option to webcam schema items and RKCameraPreview
  • Swift: Add setActiveFormat(bestFor:) and bestFormat(for:) methods to RKCamera
  • Swift: Add maxVideoDimensions and preserveActiveCameraConfiguration to RKCameraPreview
  • Swift: Cameras without usable video formats are no longer listed
  • Fix RKCameraPreview unexpectedly changing the camera resolution
  • Smoother camera switching in RKCameraPreview

0.87.3 ​

  • Swift: Add public initializer to RKRecorder.EchoCancellation.AEC3Config
  • Swift: Add DocC guides for project setup, first recording, output formats, logging, system audio, Apple device recording and echo cancellation

0.87.2 ​

  • Swift: Package now includes documentation articles and AGENTS.md

0.87.1 ​

  • Swift: Throw RKError with videoFormatError code instead of crashing when a camera reports invalid video dimensions

0.87.0 ​

  • Swift: Virtual webcams that only offer BGRA formats (e.g. Persona) can now be recorded
  • Fix crash on virtual machines caused by unsupported video compression properties
  • Fix echo cancelled audio being longer than the recording
  • Fix Core Audio system audio recording in virtual machines

0.86.0 ​

  • Swift: Add echoCancellation option to webcam schema items
  • Swift: Remove unused public VTCompressionSession extension
  • Fix data race crash during audio recording

0.85.0 ​

  • Swift: Renamed App Store SDK from RecordKitAppStore to RecordKitSandboxed
  • Swift: Rewritten echo cancellation with configurable AEC3Config (sample rate, suppression mode, high-pass filter, residual echo gate)
  • Swift: Replaced aec3Online/aec3Offline/aec3Both cases with single .aec3(AEC3Config) case on RKRecorder.EchoCancellation

0.84.0 ​

  • Swift: Filter Core Audio aggregate devices from microphone list

0.83.0 ​

  • Swift: probeSystemAudioRecordingStatus(backend:) now available in non-sandboxed SDK
  • Swift: System audio permission checking improvements for Core Audio backend

0.82.1 ​

  • Fix data race crash when recording window corners

0.82.0 ​

  • Swift: System audio now defaults to Core Audio backend
  • Swift: Backend-aware system audio permissions via RKAuthorization.systemAudioRecording(backend:) and RKAuthorization.requestSystemAudioRecording(backend:)
  • Swift: Add probeSystemAudioRecordingStatus(backend:) for sandboxed apps
  • Electron: requestSystemAudioRecording() now returns Promise<boolean>

0.81.0 ​

  • Swift: Improved Core Audio tap process detection for system audio recording

0.80.0 ​

  • Swift: Add .appleDevice schema item for recording Apple device screens with rotation support
  • Swift: Deprecate appleDeviceStaticOrientation in favor of appleDevice
  • Swift: Add .preferred support for RKAppleDevice
  • Fix log writer close errors no longer failing a recording

0.79.0 ​

  • Swift: Add configurable keyframeIntervalDuration to RKRecorder.Settings
  • Swift: Add configurable audioSegmentDuration and videoSegmentDuration to RKRecorder.Settings

0.78.0 ​

  • Fix audio drift caused by clock domain mismatch

0.77.0 ​

  • Swift: Add echoCancellation parameter to microphone schema items for WebRTC AEC3-based echo cancellation
  • Swift: Add runtime warnings for missing camera/microphone entitlements and NS*UsageDescription Info.plist keys

0.76.0 ​

  • Swift: Add .coreAudio case to SystemAudioBackend for recording system audio via Core Audio process taps (macOS 14.2+)
  • Swift: Promote Core Audio backend from beta (._beta_coreAudio is now deprecated in favor of .coreAudio)

0.75.0 ​

  • Swift: Add videoCodec option to webcam schema item
  • Electron: Add new webcam recording options

0.74.1 ​

  • Fix recording of window larger than maxSize adding black bars

0.74.0 ​

  • Swift: Add includeAudio option for windowBasedCrop
  • Fix sharp recording for non-retina displays

0.73.0 ​

  • Electron: Add videoCodec and colorSpace options for screen recording

0.72.0 ​

  • Swift: Add SCKAudioStreamRecorder for streaming system audio from ScreenCaptureKit

0.71.0 ​

  • Swift: Add isVirtual property to RKCamera and RKMicrophone
  • Swift: Improved RKError with error codes and better LocalizedError conformance
  • Fix crash when setting up NSWorkspace KVO observation from background thread

0.70.0 ​

  • Swift: RKRecorder.prepare() now returns RKBundleInfo

0.69.0 ​

  • Swift: Update screenRecordingIndicator filter for macOS Tahoe compatibility
  • Fix video dimensions not being aligned to even numbers

0.68.0 ​

  • Improved macOS cursor type detection

0.67.0 ​

  • Swift: Add topWindowInfoOutputOptions to display schema
  • Swift: Add inputEventsOutputOptions to display schema
  • Swift: Add JSONOutputOptions for configurable JSON output

0.66.0 ​

  • Swift: Add move(to:) method to RKWindow

0.65.0 ​

  • Swift: Add maximize(), resize(to:), and center() methods to RKWindow

0.64.0 ​

  • Swift: RKDisplayDecorator now supports multiple panels

0.63.0 ​

  • Swift: Add RKDisplayDecorator for overlaying panels on displays
  • Swift: Add RKWindowTrackerView for tracking windows in SwiftUI
  • Swift: Add RKWindow resizing support
  • Swift: Fix WindowTracker losing window state after moving between displays

0.62.0 ​

  • Swift: Add pause/resume support to recordings
  • Swift: Add RKDiscontinuationEvent for tracking recording interruptions

0.61.0 ​

  • Improved state machine implementation in the RKRecorder

0.60.0 ​

  • Swift: Add videoCodec output options
  • Swift: Fix sending annotations in concurrent iteration

0.59.1 ​

  • Swift: Add ContentMode option to RKCameraPreview

0.59.0 ​

  • Filter webcam formats to 420v and 420f for better compatibility

0.58.0 ​

  • Swift: Add preserveActiveCameraConfiguration option to webcam configuration
  • Electron: Add preserveActiveCameraConfiguration, leftAudioChannelOnly and audioDelay fields in webcam configuration

0.57.0 ​

  • Fix crash in MicrophonePowerMeter with CamLink 4K microphone

0.56.2 ​

  • Improved logging about dropped sample buffers and active frame duration changes

0.56.1 ​

  • Improve camera format selection logic for better quality
  • Swift: Add symbolName property to RKDisplay

0.55.0 ​

  • Avoid toggling Center Stage if control mode is set to user
  • Improved logging

0.54.5 ​

  • Fix crash when AVAudioFormat initialization fails

0.54.4 ​

  • Fix crash in audio processing

0.54.3 ​

  • Fix audio stream buffer initialization issues

0.54.2 ​

  • Improve error messages when prepare or start fails
  • Add MotivMix to the list of audio loopback apps
  • Improved audio stream reliability

0.54.1 ​

  • Swift: Drop video frames when they arrive in the wrong order

0.54.0 ​

  • Swift: Improved audio timing accuracy during recordings

0.53.1 ​

  • Electron: Updated EventEmitter imports for better compatibility

0.53.0 ​

  • Electron: New streaming audio support for microphone, system audio, and application audio
  • Electron: New createWebAudioBuffer helper function for converting audio streams
  • Swift: Make microphone stream callback available

0.52.0 ​

  • Swift: Fix multithreading bug where audio could write to asset writer before it was started
  • Swift: Add inline documentation improvements
  • Electron: Add comprehensive documentation for Discovery, Permissions, and Recording Schemas

0.51.1 ​

  • Swift: Additional audio delay logging for debugging

0.51.0 ​

  • Swift: New audioDelay option for microphone recorder

0.50.0 ​

  • Swift: Beta implement system audio recording using Core Audio
  • Electron: Add SystemAudio/ApplicationAudio recording

0.49.3 ​

  • Fixed for Xcode 26 beta 1 compatibility

0.49.2 ​

  • Fix documentation building issues

0.49.1 ​

  • Fix build with Xcode 16.4

0.49.0 ​

  • Video is now always recorded with first frame at time zero for better compatibility

0.48.2 ​

  • Fix audio recording issues with ScreenRecorder on Intel Macs
  • Record desktop independent windows always at 2x resolution

0.48.1 ​

  • Make desktopIndependentWindow macOS 13.1+ only

0.48.0 ​

  • Swift: Add crop option to display recording.
  • Keep Mac awake during a recording.
  • Swift: RKRunningApplication now exposes the bundle identifier of the app.
  • Add videoDimensions to the bundle format, deprecating recordingScale.
  • Swift: Add support for recording a window independent of the desktop.

0.47.1 ​

  • Fix potential issue when recording microphones with more than 2 channels.

0.47.0 ​

  • Fix bug when recording left audio recording.
  • Fix bug in input recorder when it's momentarily disabled by macOS.

0.46.0 ​

  • Fixes for SCKAudioRecorder on Intel Macs.

0.45.0 ​

  • Restart input recording when interrupted.
  • Swift: Add minimumFrameInterval and maxVideoDimensions options to screen and webcam recorders.
  • Swift: Add the option to record the mic left channel only
  • Prevent webcam from changing it's resolution unexpectedly.

0.44.0 ​

  • Fixed an issue M4A files didn't have the correct container format.

0.43.0 ​

  • Enable segmented file recording for audio recorders.
  • Workaround for non-working Studio Display camera in RKCameraPreview

0.42.0 ​

  • RKDisplay identifier changed to prevent collisions.
  • Include device name in error message where relevant.
  • Fixed a multithreading issue in the recorder.

0.41.0 ​

  • Exclude Apples TipKit view when screenRecordingIndicator exclude option is used.

0.40.0 ​

  • Added low disk space error to SCKAudioRecorder.
  • Swift: Added option to exclude specific processes from screen recordings.

0.39.0 ​

  • Swift: Improve performance of switching cameras in RKCameraPreview.
  • Swift: Improve performance of switching microphones in MicrophonePowerMeter.

0.38.0 ​

  • Major performance improvements in top window tracking.

0.37.3 ​

  • Prefixed all Objective-C code with RK to avoid name collisions.

0.37.0 ​

  • Additional minor logging improvements.

0.36.0 ​

  • Improved logging.
  • Improve window tracking when new windows are created.

0.35.0 ​

  • Fix correctly stopping input event capturing once a recording is stopped.
  • Fix incorrectly aborting the recording when using input recording.

0.34.0 ​

  • Reduce CPU usage when window discovery isn't used anymore.
  • Fix memory leak in JSON writer.

0.33.0 ​

  • Prevent memory load in macOS 13 when using segmented file output.
  • Added window title change tracking.
  • Swift: Only trigger camera prompt when preview is visible

0.32.0 ​

  • Improved audio recording reliability.

0.31.0 ​

  • Swift: Add accessibilityProcessTrusted to RKAuthorizationStatus
  • Minor top window tracking improvements.

0.30.0 ​

  • Swift: Allow custom content in RKCameraPreview.
  • Fixed memory leak while capturing user input.
  • Performance improvements in top window tracking.

0.29.0 ​

  • Fix possibly incorrect recordingSize in RKBundleInfo.
  • Fixed an ordering issue in the top window detection.

0.28.0 ​

  • Added recordingSize & recordingScale to the recordkit.json file.

0.27.0 ​

  • Swift: Update RKMicrophonePreview, only render when window is visible on screen.
  • Swift: Add promptForAuthorization option to RKCameraPreview.

0.26.0 ​

  • Improved top window detection logic.

0.25.0 ​

  • Swift: Microphone preview support, monitoring power levels.
  • Swift: Use cameraID in RKCameraPreview.

0.24.1 ​

  • Swift: Fixes RKCameraPreview background color and start/stop behaviour.

0.24.0 ​

  • Swift: Renamed RKAuthorizationStatus to RKAuthorization.
  • Made streaming JSON writing atomic to be more robust in case of a crash.
  • Renamed RKWindow onlyOnScreen filter option to allOnScreen.

0.23.0 ​

  • Fixed an issue where tracking the top window didn't always correctly stop.

0.22.0 ​

  • SwiftUI: Improve display highlighting.

0.21.0 ​

  • Clearer logs when discovery of Apple devices fails.
  • Swift: Improved the API around authorization status.

0.20.0 ​

  • Added RKCameraPreview to preview a camera in SwiftUI.
  • Apple device recordings now also capture audio from the device.
  • Recorder is more robust when prepare/start/stop are called multiple times.
  • The start method on a recorder can now throw an error if something fails.
  • Improved precision of recorder start/stop.
  • Improved window filtering when listing available windows.
  • Improved resillience of all audio recorders when audio gaps occur.
  • Segmented output now has correct video dimensions for Apple device recordings.
  • Improved error messages through the SDK.
  • Improved log messages through the SDK.
  • Swift: Options to exclude windows when recording a display.
  • Swift: Improved device discovery API.
  • Swift: Ability to store/retrieve prefered microphone, camera and display.

0.19.0 ​

  • Electron: Add option to receive RecordKit logs through recordkit.on('log', (logEvent) => { }).

0.18.1 ​

  • Fixed missing types from API documentation.

0.18.0 ​

  • Added support for segmented media streams (HLS) output.

0.17.0 ​

  • Improved output file when screen recording starts or ends with static video.
  • Electron: Add option to set log level per category.

0.16.0 ​

  • Electron: Log RecordKit log message to console.
  • Electron: Add option to set log level for RecordKit.
  • Improved stability of RKRecorder.getWindows.

0.15.1 ​

  • Fix: Occasional crash when starting multiple keyboard recorders after each other.

0.15.0 ​

  • Electron: Add explicit cancel method on Recorder.
  • Support for mp4 and mov video container file types.

0.14.0 ​

  • Fix: Issue where preferred microphone would sometime return no microphone.

0.13.0 ​

  • Added additional debug logging around discovered devices.
  • Fixed a potential deadlock.

0.12.1 ​

  • Resolved an issue preventing some camera and screen recordings from finalizing.

0.12.0 ​

  • New allowFrameReordering setting on recorder to disable generation of B-frames in output files.
  • Length of recorded videos is much more accurate to the start/stop of the recorder.
  • Several thread safety improvements.
  • Swift: New RKSources property wrapper to discover recording sources like microphones.
  • Swift: New RKMicrophone (async) discovery methods microphone and updates.
  • Swift: New RKMicrophone.preferred property to get the preferred microphone.
  • Swift: New RKUserPreferred class to manage and access preferred recording sources.
  • Swift: Removed RKRecorder.Scheme the API; Use the RKRecorder initializer that takes [RKRecorder.SchemaItem] instead.
  • Electron: Updated availability type information for several recording sources.

0.11.0 ​

  • Swift: Add RKSources property wrapper to list available recording sources

0.10.0 ​

  • Swift: Add System Audio recorder

0.9.0 ​

  • Swift: Add Display recorder
  • Swift: Add Microphone recorder
  • Swift: RKRecorderScheme has been renamed RKRecorder.Scheme

0.8.1 ​

  • Fix: Don't show window sharing indicator in WindowBasedCrop recorder

0.8.0 ​

  • Fix: Other windows are no longer being recorded in WindowBasedCrop recorder

0.7.0 ​

  • Add support keyboard input recording

0.6.0 ​

  • The cursor type is now recorded when mouse events are being captured
  • Correctly close connection to iPhone/iPad when recording is stopped

0.5.1 ​

  • Minor documentation improvements

0.5.0 ​

  • Add support for recording iPads (without support for rotation during the recording)

0.4.0 ​

  • Electron: Live camera preview is supported

0.3.4 ​

  • Reduced the amount of calls to ScreenCaptureKit, improving performance
  • Improved error reporting when external devices fail to initialize

0.3.3 ​

  • Cleaned up log messages
  • Fix timeout errors not immediatly being thrown
  • Cancel internal tasks correctly when they time out

0.3.2 ​

  • Electron: Fix issue where RecordKit stopped responding when a 3rd party webcam wrote to the error output
  • Swift: RecordKit is now available as SPM package

0.3.1 ​

  • Electron: Group types logically in API documentation
  • Electron: Remove internal types from API documentation

0.3.0 ​

  • First publicly available release

Questions? Feel free to contact us at [email protected]