Accessibility at Bloomily

Bloomily web: Accessibility Conformance Report, WCAG Edition

Written by Bloomily from its own testing. Report date: 2026-10-10.

Based on VPAT® Version 2.5 Rev, WCAG Edition. VPAT® is a registered service mark of the Information Technology Industry Council (ITI).

Name of product and version

Bloomily web, as deployed to production on 2026-10-10: release bs-38029500808-1, source revision fad422c0bc. Every row describes this version. Design version 1, the design every customer school uses. Design version 2 is not covered by this report: on 2026-10-10 one demonstration organization used it, no customer school did, and it is the default for no one.

Report date

2026-10-10

Product description

Bloomily is software schools use to run childcare, preschool and camp programs. This report covers the web surfaces a school gives its families and the surfaces its staff use:

Not covered by this report: Bloomily's own marketing site (bloomily.app pages that are not a school's), internal tools, and retired web pages that answer 410. Emails and PDFs the product sends or generates are described in the notes.

Contact information

accessibility@bloomily.app. We send a first reply within 2 business days.

Notes

Evaluation methods used

Bloomily's own testing, 2026-09-24 to 2026-10-10. The first full pass ran on the production release of 2026-09-26; the fixes made after it were checked with their own tests, and on 2026-10-10 the live scan, the keyboard walk and the reflow checks below were run again on the version named above.

Applicable standards and guidelines

Standard / guidelineIncluded in report
Web Content Accessibility Guidelines 2.0Level A: Yes. Level AA: Yes. Level AAA: No
Web Content Accessibility Guidelines 2.1Level A: Yes. Level AA: Yes. Level AAA: No
Web Content Accessibility Guidelines 2.2Level A and AA rows reported for information only; not part of the conformance claim. Level AAA: No

Terms

WCAG 2.x report

Table 1: Success criteria, Level A

CriteriaConformance levelRemarks and explanations
1.1.1 Non-text Content (Level A)SupportsEvery icon-only button and link has a name that says what it does; decorative icons and avatars are hidden from assistive technology; the signature pad is an image named with its instructions; Admin OS charts carry their numbers in text. A family photo is named by what the product holds (the school's caption on the family's own child, the school's description written for every family, its place in the set and the date) on daily reports, albums, assessment evidence, incident reports, message pictures and event pictures. When the school supplies a caption or description (daily report photos, album photos, newsletter pictures, message pictures, event pictures and website pictures all have a field for it), the text alternative is complete. A class-album photo of another family's child: Supports when the school turns on Caption and describe the photos and videos teachers post and describes each album photo. A school website's picture that the school has not described is marked decorative and hidden from assistive technology (VoiceOver with Safari read such a picture by its file name on 2026-10-10; fixed the same day); the decorative symbols on a program card without a picture are hidden. A website gallery picture the school has not described is announced as "Gallery image" and its number until the school describes it.
1.2.1 Audio-only and Video-only (Prerecorded) (Level A)SupportsSupports when the school turns on Caption and describe the photos and videos teachers post and writes what happens in each video. The family portal shows the school's description under each teacher video (daily reports and albums) and names the video with it; for a video with no sound the description is the alternative. Website videos a school uploads must carry a captions file, and the page text around them is the school's. The product hosts no audio-only content.
1.2.2 Captions (Prerecorded) (Level A)SupportsSupports when the school turns on Caption and describe the photos and videos teachers post and checks each video's captions. The family portal's player shows the checked captions as a track with a visible Captions control that says whether it is on; only captions a person at the school has checked are shown, and a draft never reaches a family. A school's website refuses to show an uploaded video without a captions file and plays it with a captions track (when the school supplies the file); YouTube, Vimeo and Loom embeds carry the captions the school set on that host. Bloomily's own film in Admin OS ("Invite your first family") plays with its English captions on.
1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A)SupportsSupports when the school turns on Caption and describe the photos and videos teachers post and writes what happens in each video: the description plus "Show what is said" (the checked words as plain text in a named region) form the media alternative. On a school's website a described version can be added as a second video block (when the school supplies it). Bloomily's own film in Admin OS is narrated, and its narration is relied on in place of a described version.
1.3.1 Info and Relationships (Level A)Partially SupportsEvery form field has a programmatic label, required state and error text linked by id (0 label failures on every harness and live scan); form sections are headings; every page has one main region, labelled navigation regions and a heading outline; every Admin OS and Staff OS list drawn as a grid is marked as a table with column headers (58 tables, held by a test that fails on a new one without them); emails' data tables carry headers; the facts of a Health record incident are a definition list with each term paired to its value, and the Programs roster's Children and Groups switch is a named group of buttons that say which is on (fixed 2026-10-10, held by a test that fails on a term outside its pair). Gap: generated PDFs are untagged (see Notes).
1.3.2 Meaningful Sequence (Level A)SupportsReading order follows the visual order: the keyboard walk moves through navigation, main content and footer in order on every page walked, VoiceOver read the six public pages in that order, and no content is reordered by style alone.
1.3.3 Sensory Characteristics (Level A)SupportsInstructions name the control or the words to look for ("Press Keep going", "Type your name", "Fix 3 things to continue") and do not rely on shape, size, position, colour or sound alone. Reviewed in the product copy of the family flows.
1.4.1 Use of Color (Level A)SupportsLinks inside text are underlined; required fields carry an asterisk and a key; errors carry text and an icon; today's date carries a programmatic marker; status chips carry words. On the program catalog a closed listing says "Enrollment Closed", and a child's badge says in words why the child cannot join ("Too young", "Too old").
1.4.2 Audio Control (Level A)SupportsNo audio or video starts on its own on any family or operator page; a school's videos and teacher videos play on demand with native controls.
2.1.1 Keyboard (Level A)SupportsEvery control on the pages walked is reached and operated with the keyboard (Chromium and WebKit, public pages at two widths; harness assertion that nothing clickable is out of reach on every harness scan). Upload drop zones are buttons; every signature pad offers "Type your name"; the Admin OS waitlist drag has a "Change position" alternative; the Stripe card form is reached and left with Tab; the video player's Captions, "Play with description" and "Show what is said" controls are buttons. On Admin OS and Staff OS a table wider than its space scrolls inside a box that takes a Tab stop, says the table's name and moves with the arrow keys (every such box, held by a test that fails on a new one without it; fixed 2026-10-10 on the Labor and Enrollment reports and the care-checks log, where the last columns had been out of reach without a mouse); Staff OS Today's row of action buttons scrolls with its own Earlier and Later buttons. Not evaluated: the website builder's block editor and the newsletter studio (operator).
2.1.2 No Keyboard Trap (Level A)SupportsTab always moves on (asserted on every harness scan and on the public walks); dialogs, menus, sheets and the photo viewer release focus on Escape; the Stripe frame and the bot check are left with Tab.
2.1.4 Character Key Shortcuts (Level A)SupportsThe product defines no single-character shortcuts; Ask in Admin OS opens with a modifier key, and arrow keys act only inside the component that has focus.
2.2.1 Timing Adjustable (Level A)Partially SupportsThe timers a family can meet were listed (25) and given a verdict: most are off, longer than 20 hours, tied to a real-world event, or not a limit on the person. The Stripe-hosted page used for registration and walk-up payments stays open 23 hours, the cart's page 24 hours and a pay link's page Stripe's 24 hours, so a card typed there is not lost; the saved-details token no longer clears a form; a shown PIN stays until Hide. Gap: the Stripe page for a sale at the school's desk ends after 30 minutes with no warning (the shortest life Stripe allows that page), and the office starts the sale again. The drop-in price quote's 15-minute limit is not switched on for any school.
2.2.2 Pause, Stop, Hide (Level A)SupportsThe school-site testimonial rotator has a Pause/Play control, stops while any of its controls has focus and stops under the Reduce Motion setting; the hero scroll cue stops within 5 seconds; nothing else on a family or operator page moves or updates on its own.
2.3.1 Three Flashes or Below Threshold (Level A)SupportsNothing flashes.
2.4.1 Bypass Blocks (Level A)SupportsA "Skip to main content" link is the first focusable element on every page and lands in the page's main region; every page has one main region and labelled navigation regions (0 skip-link failures on every harness scan; on the 72 public walks the first Tab reached the skip link on 64, the other 8 being sign-in and password pages that focus their email field on load, where Shift+Tab reaches it, and Enter on the skip link moved focus into the main region on all 64).
2.4.2 Page Titled (Level A)SupportsEvery page's title names the page and the school ("Invoices · Billing · Growing Minds | Bloomily", "Enroll | Growing Minds | Bloomily", "Sign in | Bloomily"); Admin OS and Staff OS titles follow the current view. Minor: the account-creation page opened without a school shows a sign-in card under the title "Create your account".
2.4.3 Focus Order (Level A)SupportsFocus moves into dialogs, menus, selects and sheets, stays inside them, and returns to the opener when they close; Escape closes them; a refused submit moves focus to the error summary; a step change moves it to the new heading; removing a repeatable form entry (an emergency contact) moves focus to the previous entry's Edit button, or to Add; uploads keep focus on the row or the zone; the PDF viewer, the workspace guide, the tour and Ask return focus.
2.4.4 Link Purpose (In Context) (Level A)SupportsLink names say where they go ("Register for Preschool", "Book a Tour", "Powered by Bloomily", "View invoice"); 0 unnamed links on every harness and live scan; no "click here". On a school's home page the picture link on every program card is named by the program (VoiceOver read a card without a picture as two symbols on 2026-10-10; fixed the same day).
2.5.1 Pointer Gestures (Level A)SupportsNo path-based or multipoint gesture is required: the signature pad has "Type your name", rotators and viewers have buttons, drag ranking has "Change position".
2.5.2 Pointer Cancellation (Level A)SupportsControls act on release (native buttons and links). The signature pad draws on the down-event because drawing needs it (essential).
2.5.3 Label in Name (Level A)SupportsAccessible names contain the visible text; where a name adds words it starts with the visible label ("Describe this picture (optional), art.jpg"). Checked on every stop of the public walks that has both a visible label and an accessible name (0 mismatches on 2026-10-10).
2.5.4 Motion Actuation (Level A)Not ApplicableNothing is operated by device motion.
3.1.1 Language of Page (Level A)SupportsEvery document, error page and email declares its language. A school's website declares the language the school picks in its website settings (English unless the school picks one of 12 others), so a site written in another language is declared in that language when the school sets it.
3.2.1 On Focus (Level A)SupportsFocusing a control never changes context; selects open only on Enter, Space or an arrow key; sign-in pages focus their first field on load only.
3.2.2 On Input (Level A)SupportsChanging a filter or a select updates the list in place; forms submit only from their button; nothing navigates on change.
3.3.1 Error Identification (Level A)SupportsAn invalid field is marked programmatically and its error text sits under it, linked to it; a refused submit shows "Fix N things to continue" with a link to each field and moves focus there; Stripe's field errors and a declined payment are announced; a failed bot check says so in text with "Try again".
3.3.2 Labels or Instructions (Level A)SupportsEvery field has a visible label; required fields carry an asterisk with a "* required" key; hints and formats are read as the field's description; the consent sentence under every signature is its description; the description field under a teacher video or an album photo says who reads it.
4.1.1 Parsing (Level A)SupportsMarkup is generated by React; axe reports no duplicate ids or ARIA parsing failures on any harness or live scan. (This criterion is retired in WCAG 2.2.)
4.1.2 Name, Role, Value (Level A)SupportsButtons, links, fields, comboboxes, tabs, toggles, switches, the address combobox, the Ask combobox, upload buttons, the typed-signature switch, the video player's Captions control (pressed state) and "Show what is said" (expanded state) expose name, role and state (0 name and ARIA failures on the family and operator harness scans and the live scan); every Admin OS and Staff OS ledger exposes table roles, and a row that opens a record carries a named link or button; the payment-choice radios in the version 1 enrollment purchase panel are named. On 2026-10-10 these operator controls were fixed: the session picker on the Programs roster and the Licensing report is named by the words it shows; collection and registration bars are images named by their numbers; the Enrollment report's window links and the Payments status links say which one is current instead of claiming a pressed state; the hidden file fields on Staff OS Today's photo and video sheets are out of the Tab order and the reading, behind their named buttons; the website brand colour fields and the AI-generated mark on a lesson plan are named. Two expandable sections on a child's record (Monthly add-ons, Forms) no longer hold their link and form rows inside the control that opens them (fixed 2026-10-10, held by a test that fails on a control inside a summary).

Table 2: Success criteria, Level AA

CriteriaConformance levelRemarks and explanations
1.2.4 Captions (Live) (Level AA)Not ApplicableThe product has no live audio or video.
1.2.5 Audio Description (Prerecorded) (Level AA)SupportsSupports when the school turns on Caption and describe the photos and videos teachers post and writes what happens in each video: "Play with description" has the browser's own voice read the school's description, then plays the clip (extended description, W3C technique G8); it is offered when the browser has a voice. On a school's website a described version can be added as a second video block (when the school supplies it). Bloomily's own film in Admin OS is narrated, and its narration is relied on in place of a described version.
1.3.4 Orientation (Level AA)SupportsNo page locks the display orientation.
1.3.5 Identify Input Purpose (Level AA)SupportsSign-in, account creation, password reset, invitation, the registration wizard's parent fields, the tour request forms, the checkout signer and the family's profile in the portal identify their fields (name, given and family name, email, telephone, street address, city, state, postal code, new and current password, one-time code). On a school-built form, phone and email fields carry their purpose; a name field carries it when its label names the person filling the form (never a child, a contact or a second parent), and the school can set what any text field asks for.
1.4.3 Contrast (Minimum) (Level AA)SupportsText is 4.5:1 or better on the design tokens, status colours, school brand colours (ink chosen by computed contrast, brand text darkened to 4.5:1), orange buttons (dark ink, 7.22:1), the Stripe form, the video player (12.5:1 or better) and emails; muted text on the tinted event cards of a school's home page is 6.97:1 or better; the catalog shows closed listings and program cards at full strength (grey text 4.83:1 or better). 0 contrast failures on all 39 live public URLs at two widths and on every family and operator harness scan. The 350 Admin OS design-gallery screens show 0 contrast failures in either design on 2026-10-10, after that day's fixes: the class count on the Programs class week (4.83:1), the avatar initials on the Health record (4.84:1) and on the Licensing report (4.84:1), and on Staff OS Today the count of selected children (4.66:1, was 3.37:1), each computed from the stylesheet by a test. Disabled controls are exempt.
1.4.4 Resize Text (Level AA)SupportsAt 200 % (a 640 CSS px viewport) no text or control is lost or clipped on 15 public pages, with or without wider text spacing (2026-10-10); program summaries are shortened to two lines by design at every size, with the full text on the program's own page.
1.4.5 Images of Text (Level AA)SupportsThe product draws no text as images apart from logos, which carry the school's name as their alternative. A picture a school uploads that carries words is the school's content; the media library's description field is where its words go.
1.4.10 Reflow (Level AA)SupportsAt 320 CSS px (400 % zoom) 15 public pages show 0 px of horizontal scrolling with and without text spacing overrides (2026-10-10); 12 Admin OS and Staff OS pages reflow at 320 px with no page scroll and nothing clipped, where only data tables, tab strips and the tile dock scroll inside their own row. Signed-in family portal pages were measured at 390 CSS px, the phone width, and not at 320 CSS px.
1.4.11 Non-text Contrast (Level AA)SupportsField borders are 3.68:1 on family pages; Admin OS and Staff OS field edges are 3.33:1 or better on every surface they sit on; focus indicators are at least 3:1, including a 2 px teal ring over a white halo on a school's coloured bands (4.42:1), the school 404 page's ring (4.97:1), the 2 px outline on the focused option inside an open select or menu (4.05:1 or better) and the ring on the video player's controls (the white halo 19.47:1 against the dark viewer); the Stripe field border is 3.68:1; brand-coloured lines and testimonial dots are at least 3:1.
1.4.12 Text Spacing (Level AA)SupportsWith line height 1.5, paragraph spacing 2, letter spacing 0.12 em and word spacing 0.16 em applied, 15 public pages show no horizontal overflow and no clipped text at 320 and 640 CSS px (2026-10-10; summaries shortened to two lines by design are unchanged in kind).
1.4.13 Content on Hover or Focus (Level AA)SupportsTooltips are dismissible with Escape, can be hovered and stay until dismissed; native title tooltips are the browser's.
2.4.5 Multiple Ways (Level AA)SupportsA school's site offers its navigation, its footer links and the home page's section links; the family portal offers the rail and Home; Admin OS offers the rail and Ask (a search over pages, settings and people). Pages that are steps in a process (checkout, registration) are exempt.
2.4.6 Headings and Labels (Level AA)SupportsField labels and page headings describe their purpose; sections in a multi-section form are headings. A school's own page headings are the school's words (when the school writes descriptive headings).
2.4.7 Focus Visible (Level AA)SupportsEvery Tab stop on 18 public pages at two widths shows a visible focus indicator in Chromium and WebKit (72 walks, 774 stops on 2026-10-10; 0 without one). At rest every ring measures 3:1 or better against the colour it sits on, including the 2 px teal ring over a white halo on a school's coloured bands (4.42:1), the ring on a school's lightly tinted sections (4.15:1 or better) and the school 404 page's ring (4.97:1 or better); the focused option inside an open select or menu shows a 2 px outline (4.05:1 or better); fields draw a 2 px outline inside their box; buttons keep a 2 px ring; the Stripe form draws a 2 px ring; every harness scan asserts the same (2 px, 3:1). On Staff OS Today's photo and video sheets the hidden file fields behind the "Choose from Photos" and "Take a photo" buttons are out of the Tab order, so every stop is a control that shows its ring (fixed 2026-10-10); a scrolling table box shows the same 2 px ring when it takes focus.
3.1.2 Language of Parts (Level AA)Partially SupportsBloomily's fixed words on a school's site (navigation, buttons, default labels) are marked English, and our own screens on a school's site (enroll, checkout, register, the catalog, tour booking, the drop-in price page) are framed English with the school's program and session descriptions marked in the site's language; a school can mark one section of its site in another language; a translated message carries its language and the original its source language. Gap: on a site whose language is not English, the school's own form questions, policy text and staff bios shown inside those screens, and Bloomily's placeholders in the contact form, are marked English. No school had set another language on 2026-10-10.
3.2.3 Consistent Navigation (Level AA)SupportsNavigation, header and footer repeat in the same order on every page of a family.
3.2.4 Consistent Identification (Level AA)SupportsThe same controls carry the same names everywhere (Close, Remove, Previous month, Next month, Pause, Play, Captions).
3.3.3 Error Suggestion (Level AA)SupportsError text says what to fix ("enter an address like name@example.com", "is required", "enter 2 to 4 letters").
3.3.4 Error Prevention (Legal, Financial, Data) (Level AA)SupportsRegistration ends with a Review and Confirm step; checkout shows every item and the total beside the payment form before Pay, and the school can refund a payment; form answers stay editable before Send; a kiosk-door check-in can be reversed by a check-out.
4.1.3 Status Messages (Level AA)SupportsError summaries take focus; upload results, signature added or cleared, address suggestion counts, Ask's match count, walkthrough steps and "Captions are live for families" are announced from status regions; the family portal's inline confirmations ("Saved." and the like) are announced from status regions; toasts announce through a live region and error toasts stay until closed; declined payments and failed bot checks are announced.

WCAG 2.2 criteria (information only, not part of the claim)

CriteriaConformance levelRemarks and explanations
2.4.11 Focus Not Obscured (Minimum) (Level AA)Partially SupportsOn 72 public walks (2026-10-10, Chromium and WebKit) the skip link renders above the fixed navigation, focused controls on a school's site scrolled clear of its sticky bottom call-to-action bar, and no toast covered a control. Gap, seen on the 2026-09-27 walks and not on the 2026-10-10 walks: at phone width, a focused program card at the bottom of the screen on the program catalog can sit more than half under the catalog's sticky bottom bar; the row keeps it until a walk with sessions selected rules it out.
2.5.7 Dragging Movements (Level AA)SupportsEvery drag has a single-pointer alternative: typed signatures, upload buttons, "Change position" for waitlist ranking.
2.5.8 Target Size (Minimum) (Level AA)Partially SupportsMost targets are 24 by 24 CSS px or larger; 92 of 382 stops in Chromium (93 of 392 in WebKit) on the public walks measured under 24 px in one dimension: inline text links, which are exempt, and a school site's 20 px tall navigation buttons, which do not overlap another target.
3.2.6 Consistent Help (Level AA)SupportsThe Guide corner in Admin OS and Staff OS, and a school's contact section on its site, sit in the same place on every page.
3.3.7 Redundant Entry (Level AA)SupportsCheckout and registration prefill what the family already entered in the session.
3.3.8 Accessible Authentication (Minimum) (Level AA)SupportsSign-in never requires a cognitive test: a code sent by email or a password; codes can be pasted; the bot check shows at most a checkbox and never a puzzle.

This report describes Bloomily's own testing of the version named above on the date named above. It is not a certification, and it makes no statement about content a school or a family adds to the product.