Skip to main content
Skip table of contents

Android framework 5

5.0.0-rc.1 (2025-11-14)

API Docs

These release notes describe the changes since 4.6.0.

New features

  • Added the new renderer ContinuousScroll that 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.readingAreaRange and its corresponding listener OnReadingAreaRangeChangedListener as experimental APIs as we may change the definition of the Reading Area based on your feedback.

  • Added a new ReaderView.goTo() option scrollRendererScrollBehavior to control how scroll renderers behave when the target position is already visible in the ReaderView.

  • Scroll renderers can now smoothly scroll to nearby positions. The duration of the smooth scrolling can be controlled with the renderer options scrollAnimationDurationMs and scrollAnimationMaxDistance. Please refer to the API documentation for more information.

  • Added a new listener method, OnRendererScrollEventListener.onRendererScrollChanged(event: RendererScrollEngineEventData), which is called continuously while scroll renderers are scrolling.

  • Changed the OnRendererScrollEventListener.onRendererScrollStarted(event: RendererScrollEngineEventData) parameter type to RendererScrollEngineEventData. It is now possible to determine whether scrolling was initiated by the user by inspecting the userGenerated property.

  • 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 a new option to ReaderView.scrollBy() called setReadingPositionToReadingAreaStart. When set to true, 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 of scrollBy()

  • Added support for EPUB switch/case elements.

Breaking changes

  • Upgraded KGP version to 2.1.21, AGP version to 8.7.3 and Gradle version: 8.9

  • Compiling with Java 11:

    • sourceCompatibility: 11

    • targetCompatibility: 11

    • jvmTarget: 11

  • The minimum supported WebView version is now Chrome 64.

  • ColibrioResult.onSuccess has been split into two overloads for better coroutine support:

    • onSuccess(action: (T) -> Unit): ColibrioResult<T> — for regular actions

    • onSuccessSuspend(action: suspend (T) -> Unit): ColibrioResult<T> — for suspending actions
      If you were previously calling onSuccess { someSuspendFunction() }, switch to onSuccessSuspend.

  • ColibrioResult.onError has been split into two overloads for better coroutine support:

    • onError(action: (exception: ColibrioException) -> Unit): ColibrioResult<T> — for regular actions

    • onErrorSuspend(action: suspend (exception: ColibrioException) -> Unit): ColibrioResult<T> — for suspending actions
      If you were previously calling onError { someSuspendFunction() }, switch to onErrorSuspend.

  • Reordered properties alphabetically in all Renderer options:

    • FlipBookRendererOptions

    • SingleDocumentScrollRendererOptions

    • SinglePageSwipeRendererOptions

    • SpreadSwipeRendererOptions

    • StackRendererOptions

  • The ContainerContentBlockType enum entry MATHML_SUB_SUPERSCRIPT was renamed to MATHML_SUBSUP_SCRIPT to be consistent with its value.

Changes to default options

  • EpubReaderPublicationOptions.documentSectioningOptions.enabled has changed from false to true.

  • ReaderViewOptions.pageProgressionTimelineOptions.enabled has changed from true to false.

  • ReaderPublicationOptions.reflowOptions.unforcedTextBreak.widows.minLines has changed from 3 to 2.

If you are using PageProgressionTimeline, in addition to enabling it, you must also:

  • Set EpubReaderPublicationOptions.documentSectioningOptions.enabled to false

or

  • Set ReaderViewOptions.pageProgressionTimelineOptions.forceCompleteRendition to true

Removed old deprecated types and members

  • ColibrioAudioPlayer.setMediaSessoinMetaData(mediaSessionMetadata: ColibrioMediaSessionMetadata)

    • Use setter for ColibrioAudioPlayer.mediaSession.metaData

  • ColibrioAudioPlayer.setMediaCommands(mediaCommands: ColibrioMediaCommands)

    • Use setter for ColibrioAudioPlayer.mediaSession.mediaCommands

  • FetchNavigationItemReferencesResultData

    • Use FetchNavigationItemReferencesResult

  • ReaderPublicationNavigationData

    • Use ReaderPublicationNavigation

  • ReaderPublicationNavigationCollectionData

    • Use ReaderPublicationNavigationCollection

  • ReaderPublicationNavigationItemData

    • Use ReaderPublicationNavigationItem

  • ReaderPublicationNavigationItemReferenceData

    • Use ReaderPublicationNavigationItemReference

  • SyncMediaPlayer.approximateElapsedTime

    • Use SyncMediaPlayer.approximateElapsedTimeMs

  • SyncMediaPlayer.playing

    • Use !(SyncMediaPlayer.paused) && (SyncMediaPlayer.ready)

  • VisiblePageData

    • Use VisiblePage

  • ReaderView.fetchRectsForVisibleContent(visiblePage: VisiblePageData, locator: SimpleLocatorData?, options: VisibleContentRectsOptions, onSuccess: (VisibleContentRectsResultData) -> Unit, onError: (ColibrioException) -> Unit)

    • Use VisiblePage.fetchRectsForVisibleContent(locator: SimpleLocatorData?, options: VisibleContentRectsOptions, onSuccess: (VisibleContentRectsResultData) -> Unit, onError: (ColibrioException) -> Unit)

  • ReaderView.fetchRectsForVisibleContent(visiblePage: VisiblePageData, locator: SimpleLocatorData?, options: VisibleContentRectsOptions): ColibrioResult<VisibleContentRectsResultData>

    • Use VisiblePage.fetchRectsForVisibleContent(locator: SimpleLocatorData?, options: VisibleContentRectsOptions): ColibrioResult<VisibleContentRectsResultData>

  • Setter for ReaderView.syncMediaPlayer

    • Use ReaderView.setSyncMediaPlayer(syncMediaPlayer: SyncMediaPlayer?, initialSyncMethod: SyncMediaReaderViewSynchronizationMethod)

  • ReadingSystemEngine.addOnLicenseEventListener(listener: OnLicenseEventListener)

    • Use ColibrioReaderFramework.addOnLicenseEventListener(listener: OnLicenseEventListener)

  • ReadingSystemEngine.removeOnLicenseEventListener(listener: OnLicenseEventListener)

    • Use ColibrioReaderFramework.removeOnLicenseEventListener(listener: OnLicenseEventListener)

  • ReadingSystemEngine.createZipResourceProvider(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions, onSuccess: (ZipResourceProvider) -> Unit, onError: (ColibrioException) -> Unit)

    • Use ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions) : ColibrioResult<ZipResourceProvider>

  • ReadingSystemEngine.createZipResourceProvider(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions)

    • Use ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions) : ColibrioResult<ZipResourceProvider>

  • ZipResourceProvider.create(dataSource: RandomAccessDataSource, serializedZipArchiveInformation: ByteArray, chunkCacheSize: Int, onSuccess: (ZipResourceProvider) -> Unit, onError: (ColibrioException) -> Unit)

    • Use ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions): ColibrioResult<ZipResourceProvider>

  • ZipResourceProvider.create(dataSource: RandomAccessDataSource, serializedZipArchiveInformation: ByteArray, chunkCacheSize: Int) : ColibrioResult<ZipResourceProvider>

    • Use ZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions) : ColibrioResult<ZipResourceProvider>

Deprecations

  • The renderer option ignoreAspectRatio has been deprecated in all Renderer options. Please use ReaderViewOptions.contentDisplayAreaOptions instead.

Bug fixes

  • Fixed issue with native audio playback not responding to next and previous buttons on headphones for example.

  • Fixed issue with parsing WP manifest.

  • Fixed an issue with pinch-zooming in PDFs containing many links. Previously, if one finger was on a link, pinch-zooming failed.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.