Appearance
Release notes Android Framework 5 release candidate
For more information about release candidates, see Release Candidates.
5.0.0-rc.3 2026-04-02
New features
Added support for publications utilizing CSS nesting.
Introduced explicit focus targeting for
ReaderView.focusOnReadingPosition. You can now select the nearest element, character, word, or sentence, significantly improving precision for accessibility and reading-position workflows.Added a new
insetsoption to the various renderer options classes. This allows for extra padding inside the renderer's scrolling container, ensuring content can be scrolled comfortably below system UI elements like device notches or status bars.Note: This option is currently experimental and its behavior may change prior to the final
5.0.0release.Upgraded PDF.js to version
5.4.530, delivering enhanced performance and broader document compatibility.
Deprecations
- Deprecated
focusNearContentLocationinFocusOnReadingPositionOptions. Please usefocusTargetOptionsinstead.
Improvements
- Changed the default value of
EpubSelectorDocumentSectioningAlgorithm.minimumCharactersPerSectionfrom10000to20000. - Selectors defined in
EpubReflowOptions.fragmentableElements.blacklistSelectorsare now also used when performing document sectioning breaks. - Elements that trigger document sectioning breaks are now marked with the attribute
data-colibrio-document-sectioning-break. The attribute value is set to eitherBEFOREorAFTERdepending on the rule that triggered the document sectioning break. - Improved support for PDF Character Maps (CMap), enabling improved text support for complex scripts and various languages.
Bugfixes
- Fixed an issue that could cause publication content with
position: absoluteto overflow in paginated renderers without being able to scroll the content. - Resolved an issue where
:nth-pseudo-class selectors using An+B syntax like:nth-child(2n+1)sometimes were not preserved correctly. - Fixed an EPUB rendering issue where overflow mitigations could override publication-defined CSS transforms in reflowable content documents.
- Fixed several issues where selecting text in PDF documents would fail or behave unexpectedly.
- Fixed an issue that could cause
SearchResultItemIterator.takeRemaining()to fail on a large set of search results. - Resolved an issue where methods returning either a success or failure result never completed when encountering an unsupported WebView version. An error result is now returned with
errorTypeset toWEBVIEW_VERSION_OUTDATED.
5.0.0-rc.2 2026-01-23
Bugfixes
- Fixed an issue in
Renderer.ContinuousScrollwhere starting your swipe action horizontally before swiping vertically would not let you scroll. - Fixed an issue where calling
ReaderView.goTotwice in quick succession (causing the first call to be aborted) could leave pages stuck in a "Loading" state or cause rendering glitches. - Fixed an issue where nested CSS
@importdeclarations used the wrong base URL. Relative URLs inside imported CSS files located in a different directory than the parent CSS file now resolve correctly. - Fixed an issue causing EPUBs with MathML to sometimes fail rendering on Chrome 108 and earlier.
Improvements
- Removed global flags from consumer ProGuard rules that caused gradle warnings.
5.0.0-rc.1 2025-11-14
NOTE
These release notes describe the changes since version 4.6.0
New features
- Added the new renderer
ContinuousScrollthat 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.
- Note: We have marked
- 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: RendererScrollEngineEventData), which is called continuously while scroll renderers are scrolling. - Changed the
OnRendererScrollEventListener.onRendererScrollStarted(event: RendererScrollEngineEventData)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 a new option to
ReaderView.scrollBy()calledsetReadingPositionToReadingAreaStart. 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 ofscrollBy(). - 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: 11targetCompatibility: 11jvmTarget: 11
The minimum supported WebView version is now Chrome 64.
ColibrioResult.onSuccesshas been split into two overloads for better coroutine support:onSuccess(action: (T) -> Unit): ColibrioResult<T>— for regular actionsonSuccessSuspend(action: suspend (T) -> Unit): ColibrioResult<T>— for suspending actions
If you were previously calling
onSuccess { someSuspendFunction() }, switch toonSuccessSuspend.ColibrioResult.onErrorhas been split into two overloads for better coroutine support:onError(action: (exception: ColibrioException) -> Unit): ColibrioResult<T>— for regular actionsonErrorSuspend(action: suspend (exception: ColibrioException) -> Unit): ColibrioResult<T>— for suspending actions
If you were previously calling
onError { someSuspendFunction() }, switch toonErrorSuspend.Reordered properties alphabetically in all Renderer options:
FlipBookRendererOptionsSingleDocumentScrollRendererOptionsSinglePageSwipeRendererOptionsSpreadSwipeRendererOptionsStackRendererOptions
The
ContainerContentBlockTypeenum entryMATHML_SUB_SUPERSCRIPTwas renamed toMATHML_SUBSUP_SCRIPTto be consistent with its value.
Changes to default options
EpubReaderPublicationOptions.documentSectioningOptions.enabledhas changed from false to true.ReaderViewOptions.pageProgressionTimelineOptions.enabledhas changed from true to false.ReaderPublicationOptions.reflowOptions.unforcedTextBreak.widows.minLineshas changed from 3 to 2.- If you are using
PageProgressionTimeline, in addition to enabling it, you must also:- Set
EpubReaderPublicationOptions.documentSectioningOptions.enabledto false, or - Set
ReaderViewOptions.pageProgressionTimelineOptions.forceCompleteRenditionto true
- Set
Removed old deprecated types and members
- Removed
ColibrioAudioPlayer.setMediaSessoinMetaData(mediaSessionMetadata: ColibrioMediaSessionMetadata). Please use the setter forColibrioAudioPlayer.mediaSession.metaDatainstead. - Removed
ColibrioAudioPlayer.setMediaCommands(mediaCommands: ColibrioMediaCommands). Please use the setter forColibrioAudioPlayer.mediaSession.mediaCommandsinstead. - Removed
FetchNavigationItemReferencesResultData. Please useFetchNavigationItemReferencesResultinstead. - Removed
ReaderPublicationNavigationData. Please useReaderPublicationNavigationinstead. - Removed
ReaderPublicationNavigationCollectionData. Please useReaderPublicationNavigationCollectioninstead. - Removed
ReaderPublicationNavigationItemData. Please useReaderPublicationNavigationIteminstead. - Removed
ReaderPublicationNavigationItemReferenceData. Please useReaderPublicationNavigationItemReferenceinstead. - Removed
SyncMediaPlayer.approximateElapsedTime. Please useSyncMediaPlayer.approximateElapsedTimeMsinstead. - Removed
SyncMediaPlayer.playing. Please use!(SyncMediaPlayer.paused) && (SyncMediaPlayer.ready)instead. - Removed
VisiblePageData. Please useVisiblePageinstead. - Removed
ReaderView.fetchRectsForVisibleContent(visiblePage: VisiblePageData, locator: SimpleLocatorData?, options: VisibleContentRectsOptions, onSuccess: (VisibleContentRectsResultData) -> Unit, onError: (ColibrioException) -> Unit). Please useVisiblePage.fetchRectsForVisibleContent(locator: SimpleLocatorData?, options: VisibleContentRectsOptions, onSuccess: (VisibleContentRectsResultData) -> Unit, onError: (ColibrioException) -> Unit)instead. - Removed
ReaderView.fetchRectsForVisibleContent(visiblePage: VisiblePageData, locator: SimpleLocatorData?, options: VisibleContentRectsOptions): ColibrioResult<VisibleContentRectsResultData>. Please useVisiblePage.fetchRectsForVisibleContent(locator: SimpleLocatorData?, options: VisibleContentRectsOptions): ColibrioResult<VisibleContentRectsResultData>instead. - Removed setter for
ReaderView.syncMediaPlayer. Please useReaderView.setSyncMediaPlayer(syncMediaPlayer: SyncMediaPlayer?, initialSyncMethod: SyncMediaReaderViewSynchronizationMethod)instead. - Removed
ReadingSystemEngine.addOnLicenseEventListener(listener: OnLicenseEventListener). Please useColibrioReaderFramework.addOnLicenseEventListener(listener: OnLicenseEventListener)instead. - Removed
ReadingSystemEngine.removeOnLicenseEventListener(listener: OnLicenseEventListener). Please useColibrioReaderFramework.removeOnLicenseEventListener(listener: OnLicenseEventListener)instead. - Removed
ReadingSystemEngine.createZipResourceProvider(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions, onSuccess: (ZipResourceProvider) -> Unit, onError: (ColibrioException) -> Unit). Please useZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions): ColibrioResult<ZipResourceProvider>instead. - Removed
ReadingSystemEngine.createZipResourceProvider(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions). Please useZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions): ColibrioResult<ZipResourceProvider>instead. - Removed
ZipResourceProvider.create(dataSource: RandomAccessDataSource, serializedZipArchiveInformation: ByteArray, chunkCacheSize: Int, onSuccess: (ZipResourceProvider) -> Unit, onError: (ColibrioException) -> Unit). Please useZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions): ColibrioResult<ZipResourceProvider>instead. - Removed
ZipResourceProvider.create(dataSource: RandomAccessDataSource, serializedZipArchiveInformation: ByteArray, chunkCacheSize: Int): ColibrioResult<ZipResourceProvider>. Please useZipResourceProvider.create(dataSource: RandomAccessDataSource, zipResourceProviderOptions: ZipResourceProviderOptions): ColibrioResult<ZipResourceProvider>instead.
Deprecations
- The renderer option
ignoreAspectRatiohas been deprecated in all Renderer options. Please useReaderViewOptions.contentDisplayAreaOptionsinstead.
Bugfixes
- 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.