January 2025
This report was written with support from the Government of Canada’s Social Development Partnerships Program – Disability Component.
The opinions and interpretations in this publication are those of the author and do not necessarily reflect those of the Government of Canada.
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License
About NNELS
The National Network for Equitable Library Service (NNELS) is a digital public library of ebooks for Canadians with print disabilities, and an advocate for an accessible and equitable reading ecosystem for Canadians with print disabilities[1]. NNELS supports principles of openness, inclusion, and choice. NNELS is hosted by the BC Libraries Cooperative, a community service not-for-profit cooperative and a national leader in information and technology services.
Our team of Accessibility Testers has expert knowledge in the areas of accessibility testing, analysis, software development, and leadership. The team works to educate and advise publishers, technology vendors, and public libraries on best practices for accessibility. Our testers have lived experience with a range of print disabilities, including blindness, low vision, and learning disabilities.
Accessibility Summary
Our testers found the Palace mobile apps to be usable, with miner issues in accessing the platform. Most complains from screen reader users were around verbosely labelled controls and inefficient navigation, while low-vision users asked for larger text and more font options.
Introduction
Palace provides free access to digital books through participating public libraries. The service is offered as a mobile application on Android and iOS. Our testers used screen-reading and magnification software to assess the usability of the apps and website across supported platforms. Readers can find a complete list of all the software and operating systems used in this assessment in this report’s Systems and Assistive Technology section. This assessment aims to determine the usability experience of readers with print disabilities and to what extent they can access content through their local public library effectively and efficiently. While this report aims to provide an overview of the accessibility performance across supported platforms, this is not an in-depth review of Palace itself. As a result, some functionality may not be discussed at all or in-depth.
Introduction to Assistive Technology
All mainstream operating systems include built-in screen readers (Narrator on Windows, VoiceOver on Apple devices, and TalkBack on Android) that read the contents of the screen out loud, allowing users with visual disabilities to browse apps and websites, send and receive texts and emails, and accomplish many other tasks with ease. Keyboard commands and custom touch gestures provide a flexible way for a user to find and interact with the controls on-screen. Windows also has alternative screen-reading software available, most notably a commercial option called Job Access with Speech (JAWS) and a free and open-source option called Non-Visual Desktop Access (NVDA). The text spoken by a screen-reader can be sent to a refreshable braille device. Mainstream operating systems are also equipped with user interface magnification, large text options, and high-contrast viewing mode to assist people with low vision.
To ensure usability and accessibility of an application by people with print disabilities, all functions and controls must be accessible using assistive technologies. The DAISY Consortium explains that the basic assumption of accessibility evaluations is that reading systems “should support reading with eyes, ears, and fingers.” (DAISY Consortium, 2017). It should be possible for users to read the content of the document by:
- Reading the text with screen readers or self-voicing text to speech (TTS) applications
- Adjusting the display, including font size, alignment, and colour contrast, or a combination of some or all these options
- Reading the text with a refreshable braille display
- Reading with assistive technologies designed for persons with dyslexia or other disabilities
- Reading with the app’s built-in read-aloud functions
Accessibility Performance and Recommendations
This section will dive deeper into specific accessibility issues encountered while testing the Palace mobile app. Below you will find the testing results and their related recommendations as they pertain to:
- Library Access
- Layout and Navigation
- Searching
- Reading and Navigation
- Visual Adjustment
Finally, the development recommendations sections contain suggestions for improving the interface on each platform. These suggestions will be relevant to any issues or observations noted above.
Palace App for iOS
- Tested iOS versions: 17, 18
- Tested app version: 1.1.4
Tutorial
A short tutorial is available when launching the app for the first time, but some users report that the app is slowed down significantly while reading. The close buttons are difficult to locate visually, and the tutorial cannot be found again in the app once dismissed.
Library Selection
Adding a library is a straightforward process. On the Add Library screen, the search field and buttons for each library are read and function properly. However, the list of libraries uses a nonstandard scrolling method. When scrolling up or down with three fingers, VoiceOver reads the text “table.scrollbypage.status” rather than announcing the new scroll position, and makes the sound to indicate nothing happened, even though the list does scroll correctly.
Login
Unlike most apps which ask for login information immediately, there is no static login button in the app. Users are only asked to log in when necessary, such as borrowing a book. On the login screen, The barcode and password fields are labeled. The button to toggle password visibility is labeled “Show” or “Hide”, and would be better if the word “Password” was added. “Sign in” and “Forgot Password?” are not identified as buttons. Adding a control type would allow VoiceOver user to identify them as actionable controls. The labels for the controls ALSO need more adequate contrast against the white background, and the typeface should be darker. All of these are minor problems that should not prevent users from logging in.
Search
The “Search” buttons in “Catalog”, “My Books” and “Reservations” are for searching within catalog, my books and reservations respectively. Changing the label to “Search Catalog”, “Search My Books” and “Search Reservations” would specify the difference in each search function.
The search field has no advanced search features or autocomplete. The only minor issue is on the button to clear the input, which is labeled “clear.button.text” for Voiceover users. A proper label such as “Clear Text” would be more readable.
Search results are displayed using the same format as category screens. Selecting a title or author opens the details screen for the corresponding book. The same accessible controls are present to toggle between showing all formats, only ebooks, or only audiobooks, but other sort and filter options are not present. VoiceOver speaks the word “Audiobook” for audiobooks but does not identify ebooks as such.
Tabs
The app uses a standard iOS tab controls interface with four tabs: “Catalog”, “My Books”, “Reservations”, and “Settings”. Increase the font size and surrounde the selected tab with a white border for better visibility.
Catalog Tab
The loading time of the catalogue is quite long, and the titles populate slower for specific sub genres. Selecting either the unlabelled button or the active library’s name (which is not a button) will bring up the library’s website. The two controls should be merged so that the library name becomes a labelled button.
The screen also consists of a list of carousels, which are often illegible Regardless of zooming in. Listing the title under its book cover would improve visibility, and adding more space between titles would prevent larger text from overlapping.
Like the library list, scrolling produces unusual results with VoiceOver. Scrolling up or down results in the same “table.scrollbypage.status” message, and scrolling any carousel left or right causes VoiceOver to say “scroll.page.summary”. This page is unnecessarily cumbersome due to the lack of headings to navigate between carousels. Scrolling all the way through each carousel before moving to the next is time consuming and adds difficulties to navigating using any non-touchscreen input device.
Each category header has two buttons with identical functionality to open a vertical list of titles. The books can be sorted and filtered according to several criteria, including availability, collection, and distributor. However, filtering by genre and sorting by format are only possible on the main screen. The filters consist of a static text for the option, such as “Sort by:” or “Availability:”, and a button labeled with the selected choice like “Title” or “Available now”. These should instead be merged into a single button, formatted like “Sort by: Title”.
Each book consists of multiple controls, including the title and format, author, and the “Get” button. All three controls should be merged into one, with a rotor action to “get” the books. This would significantly cut down on navigation by swiping left/right ones to move between titles. Adding the feature to customize and pin favourite categories to the main page would also decrease the navigation time needed to go deeper into the subcategories.
My Books Tab
The My Books tab lists the currently borrowed books. Each book is a button labeled with its title, plus the word “audiobook” if it is one, and the author’s name.
Available only on iOS 17, rotor actions allow VoiceOver users to read/listen or return each title. This is accomplished by swiping down while focused on a book, and double-tapping when VoiceOver announces the desired action. The read or listen option also speaks how many days are left on the book’s loan. The default action opens its details screen, which also has read/listen and return buttons in addition to the book’s information. Since the app does not use rotor actions on iOS 18, users must open the book details screen to listen to or return a book.
Books can be sorted by author or title. Just like the catalog tab, the label “Sort By” is followed by a button labeled with the current sorting method, which would be easier to navigate if merged.
The tab has three unlabelled buttons. The first one opens information about the library, the next is a duplicate of the search button, and the third opens the search function for finding a library. The buttons are unnecessary as the functions can all be found elsewhere in the app.
Reservations Tab
The Reservations tab displays the reserved books, with the same layout found on category and search result screens, and a “Remove” button for canceling the hold. The time remaining on each hold, currently available only on the Details screens, is a piece of key information which should be merged into an element with the ones mentioned above.
Settings Tab
The Settings tab is straightforward, containing buttons to various sub screens and a text label displaying the version number. Most of the buttons lead to information rather than actual settings, such as “About App” and “privacy policy”.
The “Libraries” button brings up all the adjustable settings, allowing adding additional libraries or modify a very limited set of options regarding an already logged in library. The controls to sign out, “Report an Issue” and “Delete Server Data” are not recognized as buttons but can be activated with VoiceOver.
Text size and background have limited options. Some text boxes do not respect the user’s custom text size, and the current largest text setting is too small for some users.
Reading
Selecting “Read” or “Listen” from either a rotor action on the My Books tab or from a book’s details screen will open the title in the ebook or audiobook reader respectively. The progress bar for downloading a book is very small and lacks contrast.
Ebooks
The ebook reader features 4 buttons near the top of the screen. The “Search”, “Reader Settings”, and “Add Bookmark” or “Remove Bookmark” buttons are properly labeled, with “viewBookmarksAndTocButton” being the exception.
VoiceOver can read and navigate the content as expected. Swiping left or right through the text reads one paragraph at a time. Rotor gestures can be used to read by character, word, line, or other units supported by VoiceOver. Navigating by elements such as headings, links and images work as well for supported titles.
Reading the entire screen at once is not activated and will stop or pause for a long time when it reaches the end of visible content on screen. While VoiceOver’s standard reading gestures work as expected, other gestures for navigating the screen behave unpredictably. Three finger swiping up and down scrolls through text, with no VoiceOver feedback on the page moved to, adding difficulties to realize content scrolled. Jumping straight to the end of a chapter is not reliable either, moving focus to the very end of the book unexpectedly.
The toolbar containing chapter navigation buttons is labeled “toolbar.label”, which is not so human readable. The buttons “Previous Chapter” and “Next Chapter” navigate by page instead of chapter, but navigating by chapter is possible using the table of contents. The buttons are labeled properly, and VoiceOver recognizes visible contents and bookmarks. Each table of contents chapter is spoken and can be double tapped to jump to that chapter.
Bookmarks are likewise spoken and can be activated and provide a rotor action to delete the bookmark. Bookmarks can’t be named, but the default names are very detailed, identifying chapter, date and time placed, and position within the chapter. The only issue on this screen is that VoiceOver still reports “There are no bookmarks for this book.” when swiping past the bookmarks created.
The “Search” button to find a phrase within the book is usable, but VoiceOver doesn’t announce the automatically populated results. Results are organized, separated by chapter with each chapter as a heading. Selecting a result moves focus to the relevant text within the book. The “Close” button on the search screen should be labelled “Clear”, as it clears the search field instead of closing the search screen.
The “Reader Settings” button opens visual settings for changing font and appearance. Low-vision accessibility options such as white on black text and dyslexic-friendly fonts are supported. The controls are labeled and identified as buttons or sliders, but VoiceOver does not indicate which options are selected when reading the buttons. The brightness slider is the only one which clearly works correctly with VoiceOver,
Besides adding read-aloud as an alternative to allow hands-free reading of ebooks, some nice to have features include adding notes, removing styles, and identifying reading progress. Adding font and color customization along with character, word and line spacing options would also improve the reading experience.
Audiobooks
Pressing the “Listen” button opens the player and immediately starts playback of the book. Playback will continue when the app is minimized, with controls available in the control centre and on the lock screen. However, pressing the back button in the app will stop playback, indicating the lack of a mini-player, and that browsing the Palace app with an audiobook playing is not possible.
Labeling of elements in the audiobook player can be improved. The “AirPlay” and “Sleep Timer” buttons have appropriate labels, while the rest are labelled using camel case, capitalizing the first letter of words without spaces in between. Many labels, such as audiobook’s title, author, and time remaining, describe the purpose but not the actual information contained. Additionally, the playback slider is not recognized as a slider, and VoiceOver is not able to adjust its value. As a result, VoiceOver users are not able to check their progress in the book of determine the remaining time.
Just like ebooks, audiobooks can be navigated by chapter via the table of contents, or by bookmarks once placed. The table of contents and the bookmarks screen have a similar layout as the ebook reader, but Voiceover does not indicate the currently playing chapter, which removes yet another method for determining the current book position. Bookmarks lack a “delete” rotor action, making deletion more cumbersome for VoiceOver users.
Playback speed is adjustable, and sleep timers can be set, but VoiceOver’s focus frequently jumps between the options, which adds difficulties to find the desired setting. Focus is not guaranteed to still be on the same setting once selected.
The icon of the sleep timer button is small and faint. With accessible large text sizes enabled, the total and elapsed chapter time and the total reading time take up too much of the screen. Instead, the buttons sleep timer, airplay, playback speed and bookmark buttons should take up a larger amount of the bottom banners.
Development Recommendations
- Merge redundant buttons and clarify icon labels.
- Fix VoiceOver issues where scrolling announces incorrect or no feedback.
- Ensure all text elements respect system-wide text size settings and provide more customization for font, color, and spacing.
- Fix labels in audiobook player and ensure book and time information are readable with VoiceOver.
Palace App for Android
- Tested OS version: iOS 17.5.1
- Tested app version: 4.32.26 and 4.32.30
Sign-up and Login
Registering and logging in present challenges to VoiceOver and magnification users. Controls lacking a label or a proper role are difficult for VoiceOver users to identify. Many of the buttons to proceed to the next screen are obscured when the on-screen keyboard is shown, forcing users to dismiss it before they can continue.
The app window appears to be calibrated for the screen size of an iPhone and does not properly enlarge on an iPad. This does not allow magnification users to benefit from the larger screen. This issue is particularly noticeable when the on-screen keyboard is visible and taking up some of the limited screen space. Attempting to make use of accessible large text sizes pushes information and controls off the screen, which makes signing up and logging in next to impossible.
Layout and Navigation
The Palace app is arranged using a system which emulates a tabbed interface. Because tabs are emulated rather than being used natively, VoiceOver recognizes tab controls as standard buttons, and is not able to announce information about each tab control’s state.
Navigating the app is inconvenient for VoiceOver users. Sections on screen are not reliably denoted using headings, so VoiceOver users cannot make use of rotor gestures to jump from heading to heading to locate a specific section of the screen. Many controls, such as cancel buttons, are not properly labeled, instead reading something not descriptive such as ‘Screenshot’. Other controls have generic and repetitive labels such as ‘View All’, which does not clearly identify the context of the control’s purpose. Still more controls, such as tabs on the Log and Discover pages, are labeled twice, which is unnecessarily verbose. Back buttons do not make use of native iOS controls, limiting VoiceOver’s ability to properly recognize them and activate them via common gestures.
Navigation is also challenging for low-vision users. Using accessible large text sizes continues to cause content to exceed the bounds of the screen, which is not helped by the window utilizing less than the entire screen on iPad. Text boxes throughout the app are very faint and difficult to see.
Participating in Challenges
Magnification users encounter barriers when performing tasks related to challenges, such as logging reading time. Enlarged content being pushed outside of the screen margins makes it difficult to select a title to log time for. Text boxes which do not meet colour contrast requirements make it difficult to enter information.
The Log Reading screen is one of the easier screens to navigate and operate using VoiceOver, as all the controls on this screen are labeled. However, buttons have separate text labels in addition to integrated labels, which causes VoiceOver to recognize two separate elements with the same label. Attempting to activate the text-only label element does not activate the button. This causes unnecessary clutter, and can confuse less savvy users.
Visual Adjustment
The Palace app does not offer any visual adjustment settings, such as adjusting text size, contrast, or dark mode. Users are reliant on their device’s low-vision accessibility settings, which the app is not fully compatible with. This results in issues such as content being pushed off the screen when enlarged, which would not happen if content could be magnified using options within the app.
Development Recommendations
- Use native iOS controls for navigational elements, such as tabs and back buttons.
- Use headings to mark the start of sections on screens with a lot of content.
- Provide concise, descriptive labels for all controls and images.
- Adjust foreground and background colours so all elements meet contrast requirements (3:1 for large elements, 4.5:1 otherwise).
- Implement visual accessibility options such as text size, high contrast, and dark mode. These settings must be accessible without being logged in.
Palace App for Android
- Tested Android version: 11, 13, 14
- Tested app version: 1.14.0
Tutorial
A short tutorial is available when launching the app for the first time, but some users report that the app is slowed down significantly while reading. The close buttons are difficult to locate visually, and the tutorial cannot be found again in the app once dismissed.
Library Selection
The library selection process is accessible but not intuitive. The “Logo” button at the top of all tabs redirects users to the library selection screen. Give the button a more descriptive label, such as “library selection”
On the list of all libraries, the back button directs to the library switcher with its list of currently added libraries instead of returning to the main page. It is possible to use the system back button to leave this screen.
Login
Users are not prompted to sign in immediately after selecting their library, leading to some confusion. Sign-in can only be accessed in the settings or when attempting to borrow a book.
The screen is generally accessible, but the password field announces “Password” twice, creating unnecessary repetition.
Search
The search process is functional but could be optimized by removing redundant elements in the results list. The book titles, authors, and formats are repeated multiple times, and the “Get” button unnecessarily includes “Button” in its label. The Search icon is very small and difficult for some users to locate or identify.
Tabs
There are four tabs: Catalog, My Books, Reservations, and Settings. Increase the font size and surround the selected tab with a white border for better visibility.
Catalog Tab
The catalog Tab displays suggested titles grouped by category. Navigation requires focusing on a category and using TalkBack’s “controls” reading mode, which is inconsistent unless a category is already selected. Add headings to the category names to jump between categories quickly. Improve navigation efficiency by combining title, author and book type, with the “get” button into one element, to swipe ones between titles.
My Books Tab
My books generally shares the same layout issues as the catalog tab, including redundancy in title information. The screen includes additional buttons like “Read,” “Download,” and “Return,”. Remove the word “Button” in their labels as the element type is already announced by TalkBack.
Reservations
Likely shares the same layout as My Books but was not fully explored in this report.
Settings
Contains accessible options but could benefit from clearer organization and labeling.
Reading
The book details page is divided into sections, but the headers are read by Talkback as static text rather than navigable headings. The labels on “Get”, “Read” and “return” could be improved by removing the word “button”.
Ebooks
The ebook player is functional but has significant barriers. Navigation within a book is restricted to swiping through text and elements as there are no previous or next chapter buttons. Vertical Scroll gestures cause a context menu to appear, while horizontal gestures scroll pages. To give a better reading experience, consider displaying an entire chapter for TalkBack to access more content at a time.
TalkBack occasionally has trouble finding the book content, but re-opening the book or restarting TalkBack fixes the issue.
Searching within a book is possible, but focus should land on the element where the keywords are found, not at the start of the section. In the reader settings, TalkBack fails to indicate the selected option for colour, text size and font choices, which currently lack proper control types. Add a dismiss button to allow exiting the dialogue without having to make a selection or using Talkback’s back gesture.
The bookmarking feature is quite accessible, but includes the help text “Add a bookmark”, which is unnecessary as the button to add or delete a bookmark is clearly labelled. The bookmarks are named after date and time, time stamp, percent read and chapter. Simplifying the info displayed at once would improve the visual experience.
Audiobooks
The audiobook player is more accessible than the ebook player but still has room for improvement. The button to add bookmark is functional but includes “Button” in its label. many button labels are unnecessarily verbose (e.g., “Set playback speed: Playback speed is currently set to 100%.”). The playback speed options themselves are verbose, with the words “Set playback speed to…” before each option.
Development Recommendations
- Remove the word “button” and redundant text elements from labels.
- Provide a clearer sign-in flow.
- Consolidate book listings into a single swipeable element and add clear category headings.
- Enlarge the search icon for better visibility.
- Increase tab font size, and indicate the tab selected.
- Improve chapter and content navigation of the ebook reader, simplify bookmark labels, and indicate the options selected in the settings.
- Ensure playback speed of the audiobook player updates in real-time.
Conclusion
The Palace app has been designed with some accessibility considerations, and the resulting interface is left with minor barriers. Screen magnification users expressed the need for larger icons, increase in contrast and more font customization. Screen-reader users found that the interface could benefit from clearer button labels and easier navigation. NNELS appreciates the accessibility enhancements on both iOS and Android and hopes that the suggestions in this report can assist the developers in working toward an even more accessible experience.
Systems and Assistive Technology
- Operating Systems
- iOS 17, 18
- Android 14
- Mobile Applications
- Palace 1.1.4 (iOS)
- Palace 1.14.0 (Android)
- Screen-readers
- VoiceOver (iOS)
- TalkBack 14 (Android)
- Magnification
- Zoom (iOS)
Acknowledgements
The following testers and editors contributed to this report:
- Patrick Bouchard
- David Kopman
- Simon Jaeger
- Riane LaPaire
- Ka Li
- Laetitia Mfamobani
- Deanna Ng
- Michael Krupp
- Melody Shih (lead writer)
- John Ylioja
Published by the National Network for Equitable Library Service (NNELS), Vancouver BC, 2025.
[1] Print disabilities are defined by Canada’s Copyright Act and include visual, mobility, or comprehension impairments such as dyslexia.