iOS framework 5
5.0.0-rc.1 (2025-11-14)
These release notes describe the changes since version 4.6.1.
New features
Added the new renderer
ContinuousScrollRendererthat shows all documents in a single vertical scrolling view.Added a new event listener for the
ReaderView,OnReadingAreaRangeChangedListener, which you can use to get notified when the reading area range changes. You can retrieve the updated value using the new property,ReaderView.readingAreaRange. Note that for paginated renderers the reading area range is the same as the visible range.Note: We have marked
ReaderView.readingAreaRangeand its corresponding listenerOnReadingAreaRangeChangedListeneras experimental APIs as we may change the definition of the Reading Area based on your feedback.
Added a new
ReaderView.goTo()optionscrollRendererScrollBehaviorto control how scroll renderers behave when the target position is already visible in theReaderView.Scroll renderers can now smoothly scroll to nearby positions. The duration of the smooth scrolling can be controlled with the renderer options
scrollAnimationDurationMsandscrollAnimationMaxDistance. Please refer to the API documentation for more information.Added a new listener method,
OnRendererScrollEventListener.onRendererScrollChanged(event:), which is called continuously while scroll renderers are scrolling.Changed the
OnRendererScrollEventListener.onRendererScrollStarted(event:)parameter type toRendererScrollEngineEventData. It is now possible to determine whether scrolling was initiated by the user by inspecting theuserGeneratedproperty.Added a new renderer option
swipeNavigationGestureThreshold. This option can be used to configure the swipe distance required to perform a swipe navigation. Additionally, swipe animations have been refined to start more smoothly.Added
ReaderViewScrollByOptionsargument toReaderView.scrollBy(length:options). When the optionsetReadingPositionToReadingAreaStartis set totrue, the reading position moves to the start of the new Reading Area after scrolling, instead of staying until it leaves the visible range. This is now the default behavior ofscrollBy().Added support for EPUB switch/case elements.
Breaking changes
Bumped minimum iOS version to iOS 15
Reordered initializer arguments alphabetically in all
Rendereroptions:FlipBookRendererOptions
SingleDocumentScrollRendererOptions
SinglePageSwipeRendererOptions
SpreadSwipeRendererOptions
StackRendererOptions
All async interactions that communicate with the web view are now
@MainActorisolatedThe
ContainerContentBlockTypeenum entry.MATHML_SUB_SUPERSCRIPTwas renamed toMATHML_SUBSUP_SCRIPTto be consistent with its value.
Changes to default options
EpubReaderPublicationOptions.documentSectioningOptions.enabledhas changed fromfalsetotrue.ReaderViewOptions.pageProgressionTimelineOptions.enabledhas changed fromtruetofalse.ReaderPublicationOptions.reflowOptions.unforcedTextBreak.widows.minLineshas changed from3to2.
If you are using PageProgressionTimeline, in addition to enabling it, you must also:
Set
EpubReaderPublicationOptions.documentSectioningOptions.enabledto false
or
Set
ReaderViewOptions.pageProgressionTimelineOptions.forceCompleteRenditionto true
Removed old deprecated types and members
ColibrioAudioPlayer.setMediaSessoinMetaData(mediaSessionMetadata:)Use setter on
ColibrioAudioPlayer.mediaSession.metaData
ColibrioAudioPlayer.setMediaCommands(mediaCommands:)Use setter on
ColibrioAudioPlayer.mediaSession.mediaCommands
typealias FetchNavigationItemReferencesResultDataUse
FetchNavigationItemReferencesResult
typealias ReaderPublicationNavigationDataUse
ReaderPublicationNavigation
typealias ReaderPublicationNavigationCollectionDataUse
ReaderPublicationNavigationCollection
typealias ReaderPublicationNavigationItemDataUse
ReaderPublicationNavigationItem
typealias ReaderPublicationNavigationItemReferenceDataUse
ReaderPublicationNavigationItemReference
typealias ColibrioViewUse
ColibrioReadingSystemView
SyncMediaPlayer.approximateElapsedTimeUse
SyncMediaPlayer.approximateElapsedTimeMs
SyncMediaPlayer.playingUse
!(SyncMediaPlayer.paused) && (SyncMediaPlayer.ready)
typealias VisiblePageDataUse
VisiblePage
ReaderView.fetchRectsForVisibleContent(visiblePage:locator:options:completion)Use
VisiblePage.fetchRectsForVisibleContent(locator:options:completion:)
ReaderView.fetchRectsForVisibleContent(visiblePage:locator:options) asyncUse
VisiblePage.fetchRectsForVisibleContent(locator:options:) async
ReaderView.syncMediaPlayer (set)Use
ReaderView.setSyncMediaPlayer(syncMediaPlayer:initialSyncMethod:)
ReadingSystemEngine.addOnLicenseEventListener(_:)Use
ColibrioReaderFramework.addOnLicenseEventListener(_:)
ReadingSystemEngine.removeOnLicenseEventListener(_:)Use
ColibrioReaderFramework.removeOnLicenseEventListener(_:)
ReadingSystemEngine.createZipResourceProvider(dataSource:options:completion)Use
ZipResourceProvider.create(dataSource:zipResourceProviderOptions:)
ReadingSystemEngine.createZipResourceProvider(dataSource:options:) asyncUse
ZipResourceProvider.create(dataSource:zipResourceProviderOptions:) async
ZipResourceProvider.create(dataSource:serializedZipArchiveInformation:chunkCacheSize:completion)Use
ZipResourceProvider.create(dataSource:zipResourceProviderOptions:)
Improvements
Most data types now conform to the
Sendableprotocol.
Deprecations
Deprecated
ignoreAspectRatioin all renderer options. UseReaderView.options.contentDisplayAreaOptionsinstead.
Bugfixes
Fixed an issue with pinch-zooming in PDFs containing many links. Previously, if one finger was on a link, pinch-zooming failed.
Fixed an issue with publication CSS stylesheets not working on iOS 26.2 Beta 2.