framework7io/framework7
32.4
Weak · 1 October 2026
105.4k
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is a comprehensive mobile UI component library that provides native-style interfaces for iOS and Material Design across React, Vue, and Svelte frameworks. It delivers a wide range of interactive elements, including complex layouts, data visualization charts, form controls, and navigation patterns, all unified by a modern, variable-based theming engine. The library supports advanced state management, service worker integration, and dynamic color generation, ensuring consistent behavior and appearance across web and native-capacitor environments.
How it got here
2014–2018 — Framework7 v9 modernization and Vite migration
86 changes.
This period focused on modernizing the Framework7 codebase by migrating the build pipeline to Vite and adopting a Virtual DOM architecture with JSX support. It involved a comprehensive redesign of all core components to use CSS variables for theming, introducing Material 3 styles, and adding new features like resizable master-detail views and swipe gestures. The work also included updating demo applications to reflect these new APIs and improving developer tooling with standardized linting and TypeScript definitions.
2019–2025 — Framework7 v6 component expansion and framework integrations
27 changes.
This period focused on developing the Framework7 v6 core library, introducing new UI components like Treeview, Text Editor, and various charts, while implementing a reactive Store module and Material You color support. Significant effort was dedicated to building comprehensive integration layers for React, Vue, and Svelte, including new component wrappers, state management hooks, and router utilities. The work also included enhancing the build system and establishing demo environments to validate the new framework-specific implementations.
Features
Add React integration with useStore helper and global API exports
The src/react directory now provides the core React integration for Framework7, introducing the \useStore\ hook alongside existing global utilities (\f7\, \f7ready\, \theme\). This change establishes the React plugin entry point and type definitions, enabling React components to access Framework7's store state and initialization callbacks.
src/react · high confidence
Add Skeleton component with dark mode support
Introduces a new Skeleton component to display loading placeholders. The implementation imports styles from the external 'skeleton-elements' library and defines CSS variables for skeleton colors, including specific overrides for the 'dark' theme class to ensure proper visibility in dark mode.
src/core/components/skeleton · high confidence
Add Snabbdom Virtual DOM implementation to the component module
The component module now includes a full Snabbdom Virtual DOM implementation, providing the core rendering engine for the router and custom components. This adds the \h\ hyperscript function for creating VNodes, a DOM API abstraction, and a suite of modules for managing attributes, classes, dataset properties, event listeners, element properties, and CSS styles (including delayed and removal animations). It also introduces a helper to attach VNodes to existing DOM elements and a 'hero' module for animating element transitions during updates.
src/core/modules/component/snabbdom · high confidence
Add Svelte helper exports and type definitions
The Svelte integration now exposes helper utilities and their TypeScript definitions. Users can import \useStore\, \f7\, \f7ready\, \theme\, and \app\ directly from the package, with corresponding types provided in \framework7-svelte.d.ts\ to support static analysis and IDE autocomplete.
src/svelte · high confidence
Added build-time header generation for Framework7 packages
The build process now automatically generates standard copyright and license headers for the Core, React, Svelte, and Vue packages. These headers are dynamically populated with the current version, description, homepage, author, license type, and release date by reading from each package's respective package.json file, ensuring that distributed bundles always contain accurate and up-to-date attribution information.
scripts/banners · high confidence
Form component TypeScript definitions and theme-specific styles added
The Form component now includes explicit TypeScript definitions (form.d.ts) that expose the public API methods (convertToData, fillFromData, getFormData, storeFormData, removeFormData) and document the associated DOM and App events (form:todata, form:fromdata, form:storedata, formajax:success, formajax:complete, formajax:beforesend, formajax:error). Additionally, theme-specific styling is now separated into form-ios.less and form-md.less, with the main form.less file conditionally importing the appropriate theme based on the active iOS or Material Design theme.
src/core/components/form · high confidence
Initial Svelte Kitchen Sink setup with Vite
A new Svelte-based Kitchen Sink demo has been added to the project, providing a complete entry point for testing Framework7 components in a Svelte environment. The setup includes an HTML entry file, a Vite build configuration that resolves Framework7 core and Svelte packages from local build artifacts, and static assets such as an autocomplete language list. This allows users to run and interact with the Svelte implementation of the Kitchen Sink using the Vite development server.
kitchen-sink/svelte · high confidence
Introduce Custom Modal component with unique backdrop support
Users can now create custom modal instances via \app.customModal.create()\, which extends the standard modal behavior to support a dedicated \custom-modal-backdrop\ class. This new component type allows for unique backdrops per modal instance (controlled by \backdropUnique\ or \forceBackdropUnique\ parameters), ensuring that backdrop elements are correctly managed and removed when the modal closes. The change includes the new \CustomModal\ class implementation, TypeScript definitions for the \customModal\ API, and associated LESS styles to handle the specific z-index and styling for custom modal backdrops.
src/core/components/modal · high confidence
Introduce Range Slider component with iOS and Material Design themes
The Range Slider component is now available, providing a customizable UI element for selecting values from a range. It supports single and dual-knob modes, vertical orientation, and a scale with customizable steps and labels. The component features distinct styling for iOS and Material Design (MD) themes, including specific knob animations, bar colors, and label positioning, and exposes a JavaScript API for programmatic value control and event handling.
src/core/components/range · high confidence
Introduce React shared utilities and router integration layer
This change adds a new \src/react/shared\ directory containing the foundational utilities and integration logic for the React component library. It introduces a \componentsRouter\ plugin that handles page, tab, and modal component loading, state tracking, and the \openIn\ functionality (launching views in popups, sheets, panels, etc.). The update also provides React hooks (\useStore\, \useTab\, \useTooltip\, \useSmartSelect\, \useTheme\) for managing Framework7 state and lifecycle events, context providers (\RouterContext\, \ListContext\, \TabbarContext\) for component communication, and helper utilities for props handling, class generation, and prototype pollution prevention.
src/react/shared · high confidence
Introduce modular, theme-aware Color Picker component
The Color Picker component has been rewritten to support a modular architecture, allowing users to customize the interface by selecting specific modules such as hue sliders, brightness sliders, color wheels, palettes, and hex inputs. The component now provides distinct visual styles for iOS and Material Design (MD) themes, including updated slider knobs, spectrum handles, and layout padding, while maintaining consistent dark/light theme support through dedicated CSS variables. It also introduces new configuration options for opening the picker in popovers, sheets, or popups, with improved event handling and view integration.
src/core/components/color-picker · high confidence
Introduce new Store module with reactive state and getters
Added a new Store module (\src/core/modules/store\) that provides a reactive state management system. The store exposes a \state\ object with automatic reactivity tracking via proxies, a \getters\ collection that return objects containing the current \value\ and an \onUpdated\ callback for dependency tracking, and a \dispatch\ method for executing asynchronous actions. TypeScript definitions are included to support this new API.
src/core/modules/store · high confidence
Introduction of Framework7 Lite build and core module structure
The core library now includes a new 'lite' entry point (\framework7-lite.js\) that provides a smaller bundle by excluding heavy components like the Router Component Loader and Template7, while still including essential modules like Store and Service Worker. This change is accompanied by a restructured core module layout, introducing dedicated files for the full build (\framework7.js\), type definitions (\framework7.d.ts\, \framework7-types.d.ts\), and CSS (\framework7.less\), alongside a new \demo-module.js\ for testing module integration. Users opting for the lite build will get a lighter footprint suitable for applications that do not require dynamic component loading via the router.
src/core · high confidence
Introduction of Toast component with iOS and Material Design styling
A new Toast component has been added to the core library, providing a modal-like notification system that supports both iOS and Material Design (MD) visual themes. The component allows users to display text and optional icons, with configurable vertical positioning (top, center, bottom) and horizontal alignment (left, center, right) for wider screens. It features automatic closing via a configurable timeout, a manual close button, and distinct transition animations for each theme (300ms for iOS, 200ms for MD). The implementation includes TypeScript definitions for type safety and exposes events for lifecycle management (open, close, destroy).
src/core/components/toast · high confidence
Introduction of Vue 3 component wrappers for v6
This change introduces a comprehensive set of new Vue 3 component wrappers for the v6 framework release. The diff adds Vue implementations for core UI elements including Accordion, Actions, App, Area Chart, Badge, Block, Breadcrumbs, Button, Card, Checkbox, Chip, FAB, and Gauge. These components utilize the Vue Composition API (setup, computed, ref) and integrate with the framework's shared utilities for styling (color classes) and event handling, providing the Vue-specific bindings for the v6 component architecture.
src/vue/components · high confidence
Introduction of the Support module for feature detection
A new support module has been added to the core, exposing a \getSupport\ utility that provides an object containing properties about supported features. This module is registered as a Framework7 plugin and is accessible via the app instance, allowing users to programmatically check for specific feature support within the application.
src/core/modules/support · high confidence
Kitchen Sink demo app CSS styles and font assets
The Kitchen Sink demo application now includes a dedicated CSS file (app.css) that defines styles for demo components, including FAB morph sheets, messagebars, grids, cards, and panels. It also embeds the Roboto font and configures the Material Icons and Framework7 Icons font families for use within the demo interface.
kitchen-sink/core/css · high confidence
New Area Chart component with interactive features
Added a new Area Chart component that renders SVG-based area or line charts. Users can configure datasets, enable tooltips on hover, display legends, and toggle individual data series visibility via legend clicks. The component supports custom formatting for axis labels, legend items, and tooltip content, and includes CSS variables for styling axis, tooltip, and legend elements across iOS and Material Design themes.
src/core/components/area-chart · high confidence
New Breadcrumbs component with iOS and Material Design styling
A new Breadcrumbs component has been added to the core library, providing a navigation aid for displaying the current location in a hierarchy. The implementation includes a JavaScript plugin registration and TypeScript definitions, along with a comprehensive styling system based on LESS. The styles define a flex-based layout with configurable spacing, padding, and typography, supporting both iOS and Material Design (MD) themes. Specific variables control item colors, active states, separator icons (chevron\_right), and a collapsed state represented by a three-dot menu icon, ensuring the component adapts to the active theme's color scheme and design language.
src/core/components/breadcrumbs · high confidence
New Gauge component for visualizing numeric values
A new Gauge component has been added, allowing users to display numeric values as circular or semi-circular SVG charts. The component supports customization of size, colors, border width, and text labels (value and label), and can be initialized via HTML elements with the \.gauge-init\ class or programmatically through the app instance. It includes lifecycle hooks for tab and page mounting/removal to ensure proper instance creation and cleanup.
src/core/components/gauge · high confidence
New Material Design 2025 color scheme support
The Material Color Utilities library now includes a new 2025 dynamic color specification alongside the existing 2021 spec. This update introduces a \DislikeAnalyzer\ to automatically adjust universally disliked colors (dark yellow-greens) and adds a \ContrastCurve\ class for more granular control over contrast levels. The 2025 spec specifically modifies surface tones for phone platforms, applying different lightness values based on the color variant (e.g., Vibrant, Neutral) and hue, while maintaining backward compatibility through a versioned spec delegate system.
src/material-color-utilities · high confidence
New Pie Chart component with SVG rendering and tooltips
A new Pie Chart component has been added to the core library, allowing users to render data visualizations as SVG elements. The component supports configurable datasets with values, labels, and colors, and includes built-in tooltip functionality that displays label, value, and percentage information on hover. It provides an API for creating, updating, and destroying chart instances, along with events for selection and destruction, and includes TypeScript definitions for type safety.
src/core/components/pie-chart · high confidence
New React component implementations for v6
The React component library in src/react/components has been significantly expanded with new implementations for v6, including Accordion, Actions, App, AreaChart, Badge, Block, Breadcrumbs, Button, Card, Checkbox, Chip, and Floating Action Buttons (FAB). These components provide React-specific wrappers around the core Framework7 functionality, enabling users to integrate these UI elements directly into their React applications with proper event handling, props, and styling support.
src/react/components · high confidence
New Service Worker core module for registration and management
A new Service Worker core module has been added, providing methods to register and unregister service workers via the app instance. Users can now configure service worker paths and scopes through app parameters, which are automatically registered during initialization. The module exposes events for registration and unregistration success or failure, and includes logic to skip initialization in Cordova or Capacitor native environments.
src/core/modules/service-worker · high confidence
New Svelte shared utilities and router integration
This change introduces a new \src/svelte/shared\ directory containing the core infrastructure for the Svelte components library. It adds a \componentsRouter\ plugin that handles page, tab, and modal component loading, including support for the \openIn\ navigation option (opening routes in popups, sheets, panels, etc.). The update also provides several Svelte composition helpers (\useStore\, \useTheme\, \useIcon\, \useTooltip\, \useSmartSelect\, \useTab\, \useRouteProps\) and utility modules for managing router attributes, modal state classes, and rest props, establishing the foundation for the v6 Svelte build pipeline.
src/svelte/shared · high confidence
New Text Editor component with rich text formatting and multiple toolbar modes
A new Text Editor component is introduced, providing a rich text editing experience with support for bold, italic, underline, strikethrough, lists, links, images, headings, alignment, and indentation. The editor supports three display modes: a standard toolbar, a popover, and a keyboard toolbar (which automatically falls back to popover on non-Android devices without Cordova/Capacitor). It includes a \clearValue()\ method, custom button support, and emits events for link and image insertion to allow post-processing. The component is styled with Material Design 3 (MD) and iOS themes, featuring touch ripples for MD and specific placeholder colors, while TypeScript definitions are provided for the API.
src/core/components/text-editor · high confidence
New Toggle component with iOS and Material Design styles
A new Toggle component is introduced, providing switch-style inputs with distinct visual styles for iOS and Material Design (MD) themes. The implementation includes core logic for touch interactions, state management, and event handling, along with LESS stylesheets defining theme-specific variables and animations. It supports automatic initialization via CSS classes (\.toggle-init\) and integrates with the framework's lifecycle events for tabs and pages, ensuring proper creation and destruction of instances.
src/core/components/toggle · high confidence
New Tooltip component with delegated triggers and manual mode
The framework now includes a new Tooltip component that supports 'hover', 'click', and 'manual' triggers, allowing for more flexible interaction patterns. It introduces a 'delegated' mode to attach event handlers to a parent element (like the document) for better performance with dynamic content, and allows specifying a custom 'containerEl' for positioning. The component automatically initializes on elements with the 'tooltip-init' class and 'data-tooltip' attribute, and provides API methods to show, hide, and update text dynamically.
src/core/components/tooltip · high confidence
New Treeview component for hierarchical navigation
A new Treeview component has been added to the core library, enabling users to display hierarchical lists with expandable and collapsible items. The implementation includes JavaScript logic for managing open/close states, handling click events on toggle elements, and supporting asynchronous child loading via a 'treeview:loadchildren' event that displays a preloader. The component is styled with CSS variables for theming (iOS and Material Design), supporting features like selectable items, nested indentation, and RTL layout adjustments.
src/core/components/treeview · high confidence
New component system with VDOM, JSX, and reactive state
The component module has been replaced with a new implementation that uses a Virtual DOM (based on Snabbdom) for rendering, introducing a new class-based component syntax and a \$jsx\ helper for JSX-like template rendering. This update adds reactive state management via \$useState\ and \$ref\ variables, supports custom components and fragments, and exposes new lifecycle hooks and context properties (such as \$f7route\, \$f7router\, and \$store\) to component instances.
src/core/modules/component · high confidence
New custom page transition styles added
This change introduces a set of new CSS styles for custom page transitions within the router, including circle, cover, cover-v, dive, fade, flip, parallax, and push. These styles define the visual animations and keyframes for navigating between pages, utilizing CSS variables for transition durations and ensuring pointer events are disabled during animations to prevent user interaction issues.
src/core/components/page/page-transitions · high confidence
New iOS-style tabbar highlight animation and MD underline highlight
The toolbar component now supports a new visual highlight for tabbar links. On iOS, a new \tabbar-highlight.js\ module adds a glassmorphic, animated highlight that follows the user's finger during touch interactions before snapping to the active tab. On Material Design (MD), the highlight is a simple 2px colored underline that moves to the active tab. This behavior is controlled by the new \toolbar.setHighlight()\ API method and is automatically initialized for iOS tabbars. The styling is defined in new \toolbar-ios.less\ and \toolbar-md.less\ files, which also introduce CSS variables for customizing the highlight colors and sizes.
src/core/components/toolbar · high confidence
New modular color picker components
The color picker now supports a variety of new input modules, allowing users to select colors using an HSB spectrum, an HS spectrum, an SB spectrum, a color wheel, or individual sliders and bars for Hue, Saturation, Brightness, Red, Green, and Blue values. Additional modules provide an alpha (opacity) slider, a hex code input, a palette for quick color selection, and displays for the initial and current colors.
src/core/components/color-picker/modules · high confidence
New touch highlight component with iOS-specific scroll fixes
A new touch highlight feature has been added to the core components, providing a radial visual feedback effect on touch interactions. For iOS users, this update resolves scrolling issues in popovers and scrollable tab bars by applying specific CSS touch-action rules to prevent the highlight overlay from blocking native scroll gestures.
src/core/components/touch-highlight · high confidence
Popup component gains swipe-to-close, push-view, and escape-key support
The Popup component now supports closing via swipe gestures (configurable via \swipeToClose\ and \swipeHandler\ parameters) and includes new \swipeStart\, \swipeMove\, \swipeEnd\, and \swipeClose\ events. It also introduces a 'push' mode (\push\ parameter) that scales and pushes the underlying view behind the popup, along with a \closeOnEscape\ parameter to allow closing the popup by pressing the ESC key. Additionally, users can now specify a custom \containerEl\ for mounting the modal and control backdrop uniqueness with \backdropUnique\.
src/core/components/popup · high confidence
Resizable Master Detail views for View component
The View component now supports resizable Master Detail layouts. When the \masterDetailResizable\ parameter is enabled, a draggable resize handle appears between the master and detail panels, allowing users to adjust the master panel width interactively. The width is constrained by \min-width\ and \max-width\ CSS properties on the master page and is persisted via a CSS variable (\--f7-page-master-width\). This feature also exposes \view:resize\ and \viewMasterDetailBreakpoint\ events to notify applications of layout changes.
src/core/components/view · high confidence
Statusbar component now supports Capacitor alongside Cordova
The statusbar component has been updated to detect and interact with the Capacitor runtime in addition to Cordova. Users running their apps on native platforms via Capacitor can now utilize the same statusbar API methods (hide, show, setTextColor, setBackgroundColor, overlaysWebView, isVisible) and configuration parameters (iosTextColor, androidTextColor, etc.) to control the device statusbar, ensuring consistent behavior across both Cordova and Capacitor environments.
src/core/components/statusbar · high confidence
Svelte Kitchen Sink demo pages added
The Svelte Kitchen Sink application now includes a comprehensive set of demo pages for the Framework7 Svelte components. This change introduces new Svelte page files (such as 404, about, accordion, action-sheet, area-chart, autocomplete, badge, breadcrumbs, buttons, calendar, cards, and checkbox) that demonstrate component usage, including specific features like expandable cards, calendar events, and various button styles.
kitchen-sink/svelte/src/pages · high confidence
Virtual List now supports automatic item height calculation
The Virtual List component now allows users to set the \height\ parameter to the string 'auto' to enable automatic calculation of individual item heights. This change introduces a new \autoHeight\ mode in the core logic, which iterates through rendered DOM elements to measure their actual heights and updates the list's total height accordingly. This feature is particularly useful for lists containing items with variable content or dynamic styling, ensuring the scroll container is sized correctly without requiring a fixed pixel height or a custom height function.
src/core/components/virtual-list · high confidence
Behavioural changes
Accordion component refactored with new lifecycle events and accessibility support
The Accordion component has been updated to include 'beforeopen' and 'beforeclose' lifecycle events that allow users to prevent the opening or closing action via a provided 'prevent' method. Additionally, the component now manages ARIA attributes by setting 'aria-hidden' on content elements when closed and removing them when opened, improving screen reader accessibility. The implementation also supports an 'opposite' mode for layout variations and introduces new TypeScript definitions for the component's API and events.
src/core/components/accordion · high confidence
Action Sheet popover conversion and styling overhaul
The Action Sheet component now automatically converts to a Popover on large screens (desktop, iPad, or width \>= 768px) when the \convertToPopover\ option is enabled, using the specified \targetEl\ or coordinates for positioning. This change includes a complete visual redesign with new Material Design and iOS-specific styles, updated CSS variables for theming, and a renamed \bold\ button class to \strong\. The component also supports unique backdrop elements and improved event handling during the popover transition.
src/core/components/actions · high confidence
App component restructured with new TypeScript definitions and CSS variables
The App component has been refactored to support modern styling and development workflows. TypeScript definitions (app-class.d.ts) now explicitly document the app instance, including new properties like \darkMode\, \userAgent\, and \url\ for SSR support, as well as methods like \setColorTheme\ and \setDarkMode\. The core JavaScript logic (app-class.js) has been updated to use shared utilities for device and support detection, and to handle dark mode changes via system media queries. Styling has been migrated to CSS variables (app-vars.less), introducing configurable safe areas, font families, and color themes for both iOS and Material Design, while app-ios.less and app-md.less handle theme-specific visibility rules.
src/core/components/app · high confidence
Autocomplete component restructured with new theming and rendering architecture
The Autocomplete component has been refactored to support modern theming and rendering patterns. The core logic in autocomplete-class.js now utilizes JSX for rendering and imports device detection via a dedicated shared utility. Theming is centralized through CSS variables defined in autocomplete-vars.less, with specific iOS and Material Design styles separated into their own files (autocomplete-ios.less, autocomplete-md.less). The component also introduces new configuration options for custom rendering (renderDropdown, renderPage, renderPopup, renderItem, renderSearchbar, renderNavbar) and updates the TypeScript definitions to reflect the current API surface.
src/core/components/autocomplete · high confidence
Automated icon font generation from SVG sources
The build process now includes a Python-based script (generate.py) that automatically constructs the 'framework7-core-icons' font. This tool reads SVG files from the source directory, processes them (including cleaning up SVG tags), and uses FontForge to generate TTF, WOFF, and WOFF2 font files, ensuring the icon set is consistently built from the latest source assets.
scripts/icon-font · high confidence
Badge component styling refactored to use CSS variables
The Badge component's appearance is now driven by CSS custom properties (e.g., --f7-badge-bg-color, --f7-badge-padding) rather than hardcoded values. This allows for easier theme customization and ensures consistent styling across iOS and Material Design themes, with specific padding and font-weight adjustments applied per platform via the new badge-vars.less file.
src/core/components/badge · high confidence
Block component refactored to use CSS variables and theme-specific styling
The Block component has been restructured to rely on CSS custom properties for all visual styling, enabling dynamic theming and easier customization. This change introduces theme-specific variants for iOS and Material Design, including distinct margin, padding, font sizes, and border radii for inset and outline states. It also adds support for new title sizes (medium and large) and allows for theme-specific strong states, ensuring the component adapts correctly to light and dark modes across different design languages.
src/core/components/block · high confidence
Build script utilities for CSS processing and file operations
The build system now includes dedicated utility modules in scripts/utils to handle CSS transformations and file management. Specifically, autoprefixer.js and clean-css.js (using cssnano) are added to process and minify styles, while less.js provides a wrapper for compiling Less files. Additionally, fs-extra.js offers a custom set of synchronous file system operations, including recursive directory creation and file copying, to support the build pipeline.
scripts/utils · high confidence
Button component styles refactored to CSS variables
The button component's styling has been migrated from hardcoded values to CSS custom properties (e.g., --f7-button-bg-color, --f7-button-height), allowing for easier theme customization. This change introduces new button variants including 'tonal' buttons and updates the visual appearance of iOS and Material Design buttons, such as adjusted border radii, padding, and transition durations, while also fixing specific issues like iOS outline button colors and Safari variable crashes.
src/core/components/button · high confidence
Calendar component restructured with new picker features and theming
The Calendar component has been refactored to support new interactive pickers (Month, Year, and Time) presented as popovers, alongside a new range picker appearance. The implementation now uses CSS variables for consistent theming across iOS, Material Design, and dark modes, and includes specific fixes for date parsing, disabled day visibility, and touch interactions.
src/core/components/calendar · high confidence
Card component restructured with CSS variables and new expandable behavior
The Card component has been refactored to use CSS custom properties for theming, introducing distinct style sets for iOS and Material Design (MD) via new \card-ios.less\, \card-md.less\, and \card-vars.less\ files. This change brings new visual styles, including \outline\ and \raised\ variants, and updates the expandable card behavior to support custom scrollable elements, backdrop configuration, and improved handling of navbars/toolbars during expansion. TypeScript definitions have been updated to reflect the new API, including parameters for hiding UI elements on open and custom scroll containers.
src/core/components/card · high confidence
Checkbox component refactored to use CSS variables and support indeterminate state
The checkbox component has been updated to use CSS variables for styling (such as size, border-radius, and colors) and now supports the indeterminate state, displaying a horizontal line when the checkbox is neither checked nor unchecked. The component also includes theme-specific styles for iOS and Material Design, with support for dark mode and icon positioning.
src/core/components/checkbox · high confidence
Contacts List component styling refactored to CSS variables
The Contacts List component now uses CSS custom properties (e.g., --f7-contacts-list-title-font-size, --f7-contacts-list-title-bg-color) to define its appearance, replacing hardcoded values. This change introduces distinct styling rules for iOS and Material Design themes, allowing for easier theme customization and consistent integration with the framework's variable-based theming system.
src/core/components/contacts-list · high confidence
Core Less infrastructure: new mixins, variables, and icon font plugin
This change introduces foundational Less assets in src/core/less to support theme-specific styling and build-time icon embedding. The new mixins.less file provides conditional mixins (e.g., .if-ios-theme, .if-md-theme, .if-dark-theme) that gate styles based on theme flags, along with hairline utilities that use device-pixel-ratio-aware transforms for crisp 1px lines, and helper classes for scrollable/disabled states and modal backdrops. The plugin.js file adds a Less plugin that base64-encodes the core icons font (framework7-core-icons.woff) via the framework7\_coreIconsFont function, enabling inline font usage without external requests. The vars.less file defines a set of breakpoints (xsmall through xlarge) for responsive sizing. Together, these files standardize how themes, hairlines, and icons are handled in the Less build pipeline.
src/core/less · high confidence
Core library restructured into shared utilities with Material You color support
The core library has been reorganized into the \src/core/shared\ directory, introducing a new modular architecture. This includes a lightweight \$jsx\ function for generating HTML strings, a \Framework7Class\ base for event handling and module installation, and a \ConstructorMethods\ helper for standardizing component APIs. Device detection (\get-device\) has been updated to support Capacitor and fix Chrome Android emulator recognition, while a new \History\ module manages browser state. A significant addition is the Material You color system, implemented via \material-color-utils\ and \material-colors\, which generates dynamic light and dark theme palettes (Tonal Spot, Vibrant, Monochrome) from a source color.
src/core/shared · high confidence
Data table component restructured with iOS and Material Design styling
The data table component has been refactored to support distinct iOS and Material Design (MD) visual themes. The JavaScript logic now handles row selection states, sortable column interactions, and proper event cleanup on destroy. Styling is split into platform-specific LESS files (data-table-ios.less and data-table-md.less) that define layout, spacing, and icon sizes, while shared variables in data-table-vars.less manage colors and typography for both light and dark modes. TypeScript definitions have been updated to reflect the current API.
src/core/components/data-table · high confidence
Device module now adds HTML classes for Capacitor and Cordova environments
The device module has been updated to automatically add \device-capacitor\ and \device-cordova\ classes to the HTML element when the app is running in those respective environments. This allows users to target these specific runtime contexts with CSS styles, alongside existing classes for OS, pixel ratio, and standalone mode.
src/core/modules/device · high confidence
Dialog component restructured with CSS variables and JSX rendering
The Dialog component has been refactored to use CSS variables for styling (defined in dialog-vars.less) and JSX for rendering (via $jsx in dialog-class.js). This change introduces a new backdrop parameter to control the semi-transparent overlay behind the dialog, and updates the iOS and Material Design themes to use the new variable-based styling system. The component now supports dynamic title requests and includes specific styling for inputs, buttons, and preloader states across both themes.
src/core/components/dialog · high confidence
Enhanced link handling with Capacitor support and view targeting
The clicks module now supports opening external links via Capacitor's Browser plugin when the target is \_system or \_blank, in addition to existing Cordova InAppBrowser support. It also allows links to explicitly target the current view using data-view="current" and supports disabling links via the 'disabled' class. Additionally, navigation can be prevented by adding the 'router-prevent' class or setting the preventF7Router property on the click event.
src/core/modules/clicks · high confidence
Grid component reworked to use native CSS Grid
The Grid component now leverages native CSS Grid layout instead of the previous implementation. This introduces utility classes for setting column and row counts (from 1 to 20) and adds responsive variants for xsmall, small, medium, large, and xlarge breakpoints. A new CSS variable, --f7-grid-gap, is introduced to control spacing between grid items, and the component structure has been simplified with theme-specific imports for iOS and Material Design.
src/core/components/grid · high confidence
Improved TypeScript definitions for the Vue bundle
The Vue package now includes updated type definition files (framework7-vue.d.ts and framework7-vue-bundle.d.ts) that explicitly export the useStore helper alongside the main framework instance, theme, and ready callback. This ensures that TypeScript users get accurate type checking and IntelliSense support when using the store integration within their Vue applications.
src/vue · high confidence
Infinite scroll component restructured with theme-specific styles and TypeScript definitions
The infinite-scroll component has been refactored to support distinct visual styling for iOS and Material Design themes. New LESS files (infinite-scroll-ios.less, infinite-scroll-md.less) define specific preloader margins and sizes for each platform, imported conditionally via the main infinite-scroll.less entry point. Additionally, a TypeScript definition file (infinite-scroll.d.ts) has been added to provide type safety for the component's API, including methods for creating and destroying scroll listeners and event definitions.
src/core/components/infinite-scroll · high confidence
Introduce Material 3 styling and CSS variables for the Chip component
The Chip component now supports Material 3 (m3) design styles, utilizing new CSS variables (e.g., \--f7-chip-bg-color\, \--f7-chip-outline-border-color\) to manage appearance. This change introduces distinct visual treatments for iOS and MD themes, including specific padding, border-radius, and font-weight adjustments, as well as updated delete button icons and margins for both light and dark modes.
src/core/components/chip · high confidence
Kitchen Sink React app now uses Vite for development and building
The React Kitchen Sink demo has migrated its build tooling from Webpack to Vite. This change introduces a new Vite configuration (vite.config.js) and an entry point (index.html) that loads the application via an ES module script. For users, this means the development server and build process are now powered by Vite, which typically offers faster startup and hot module replacement, while the application structure remains a standard React app served from the root directory.
kitchen-sink/react · high confidence
Kitchen Sink React app restructured with new entry point and routing
The React Kitchen Sink application has been restructured to use a new entry point (app.js) that initializes the app with React 18's createRoot and integrates Framework7 React. The main app component (app.jsx) now configures global behaviors such as closing modals (popup, sheet, popover, actions) on escape key press, supports theme switching via URL parameters, and enables browser history navigation conditionally. The app layout includes floating, resizable left and right panels, and a main view with master-detail breakpoint support. A new store.js file provides a simple state management example for loading users. The routes.js file defines the navigation structure for all demo pages, including new routable modals and master-detail views.
kitchen-sink/react/src · high confidence
Kitchen Sink React demos migrated to v6 APIs and Vite
The React Kitchen Sink demo pages have been updated to use the latest Framework7 v6 APIs, including the new hooks-based component patterns, and the project build system has been switched from Webpack to Vite. This change refreshes the demonstration code for components such as Accordion, Action Sheet, Area Chart, Autocomplete, Badge, Breadcrumbs, Buttons, Calendar, Cards, and Checkbox to reflect current best practices and improve the development experience.
kitchen-sink/react/src/pages · high confidence
Kitchen Sink app restructured to use a centralized store and new initialization logic
The Kitchen Sink demo application has been restructured to use a new initialization flow. The app now initializes with a centralized store (store.js) instead of relying on app data/methods, enabling state management for features like user lists. Additionally, the app configuration now explicitly enables 'closeOnEscape' for popups, sheets, popovers, and actions, and supports browser history navigation via URL parameters. The demo also includes new safe-area handling and theme/mode detection logic.
kitchen-sink/core/js · high confidence
Kitchen Sink core entry point restructured with master-detail and floating panels
The kitchen-sink/core/index.html entry point has been updated to demonstrate new UI capabilities. It now includes a left panel with a list of component links and a right panel configured as a floating, resizable side panel. The main view is initialized with safe-area support and a master-detail breakpoint set to 768px, enabling responsive master-detail layouts. The page also loads specific JavaScript modules for routes, store, and app initialization.
kitchen-sink/core · high confidence
Kitchen Sink demos migrated to Core and updated with new component styles
The Kitchen Sink demo application has been restructured to use the new Core page templates, replacing the previous layout structure. This update introduces demos for newly styled components, including M3-style Cards with outline and raised variants, Tonal buttons, and Breadcrumbs. The demos also reflect behavioral changes such as the removal of the legacy Request module in favor of native fetch, updated Swiper integration, and new iOS-style navbars and tabbars.
kitchen-sink/core/pages · high confidence
Link component styling refactored to use CSS variables and theme-specific LESS files
The Link component's styling has been restructured to rely on CSS variables for theming and visual states. New \link-vars.less\ defines variables for highlight colors and pressed opacity, while \link-ios.less\ implements the iOS-specific active-state opacity transition. The main \link.less\ file now imports these theme-specific styles conditionally and establishes base layout properties, including touch ripple color configuration, ensuring consistent styling across iOS and Material Design themes.
src/core/components/link · high confidence
List Index component now supports auto-initialization via data attributes and Vite-compatible CSS variables
The List Index component in src/core/components/list-index has been updated to support automatic initialization on elements with the .list-index-init class (triggered on pageInit, tabMounted, and vnode insert), allowing users to instantiate the component via HTML data attributes without explicit JavaScript calls. Additionally, the component's styling has been migrated to use CSS custom properties (e.g., --f7-list-index-width, --f7-list-index-label-size) defined in list-index-vars.less, replacing hardcoded values and ensuring compatibility with Vite's CSS processing. The component also now correctly adjusts its vertical position relative to navbars, subnavbars, and toolbars using these CSS variables.
src/core/components/list-index · high confidence
List component styles migrated to CSS variables
The List component's styling has been refactored to use CSS custom properties (e.g., \--f7-list-item-padding-horizontal\, \--f7-list-strong-bg-color\) instead of hardcoded values. This change introduces new theme-specific variable files (\list-ios.less\, \list-md.less\, \list-vars.less\) that define distinct visual properties for iOS and Material Design themes, including margins, font sizes, colors, and border styles. Users can now customize the appearance of list items, headers, footers, and menu lists more granularly by overriding these CSS variables, and the component supports new outline and strong states via corresponding variable-driven styles.
src/core/components/list, src/core/components/timeline · high confidence
Login Screen component restructured with CSS variables and dark mode support
The Login Screen component has been refactored to use CSS custom properties for styling, introducing variables for background colors, title typography, and transition timings. This change adds native support for dark mode by defining specific color variables for light and dark themes in the iOS and Material Design styles, ensuring the login screen background and content areas adapt correctly to the system theme. The component's JavaScript class and TypeScript definitions have also been updated to align with the new modal architecture.
src/core/components/login-screen · high confidence
Messagebar component restructured with CSS variables and theme-specific styling
The Messagebar component has been refactored to use CSS variables for theming, introducing distinct visual styles for iOS and Material Design (MD) themes. The iOS style now features a glassmorphism effect with backdrop filters and specific attachment sheet sizing, while the MD style adopts Material 3 color tokens and updated attachment layouts. This change also includes a new TypeScript definition file for improved type safety and updates to the component's lifecycle hooks to better handle initialization and destruction within tabs and pages.
src/core/components/messagebar · high confidence
Messages component restructured with CSS variables and new rendering logic
The Messages component has been refactored to use CSS variables for theming (defined in messages-vars.less) and separate platform-specific styles for iOS and Material Design. The JavaScript implementation now uses JSX for rendering messages, supporting new parameters like scrollMessagesOnEdge and custom message rules, while the TypeScript definitions have been updated to reflect the new API surface.
src/core/components/messages · high confidence
New Svelte Kitchen Sink application structure
The Svelte Kitchen Sink demo has been restructured with a new initialization pipeline. The app now uses a dedicated \app.js\ entry point that mounts the Svelte application and registers the Framework7 Svelte plugin. The main layout (\app.svelte\) configures the Framework7 app with specific parameters, including support for left and right floating panels, and enables browser history navigation conditionally based on the URL. A new routing configuration (\routes.js\) defines the navigation structure for all demo pages, and a new store (\store.js\) provides state management capabilities for the demo.
kitchen-sink/svelte/src · high confidence
New modular build pipeline for Framework7 core and framework-specific packages
The build system has been replaced with a new set of scripts that generate separate, modular outputs for the core library and the React, Vue, and Svelte wrappers. This pipeline produces distinct ESM and UMD bundles (including 'lite' variants), generates TypeScript declaration files for all components, compiles LESS styles into CSS, and updates package.json exports to support granular, tree-shakeable imports. It also handles the compilation of Material Color Utilities and updates the Kitchen Sink demo to use the newly built assets.
scripts · high confidence
Panel component refactored with new effects, breakpoints, and resizable support
The Panel component has been significantly updated to support new visual effects including 'floating' and 'push', alongside existing 'cover' and 'reveal' modes. Users can now configure visible and collapsed breakpoints to control panel visibility based on app width, and enable resizable panels that can be dragged to adjust width within defined limits. The component also introduces swipe-to-open/close gestures with configurable thresholds and areas, and improves the overall lifecycle management with better event emission for state changes like opening, closing, and breakpoint transitions.
src/core/components/panel · high confidence
Photo Browser component restructured with new parameters and CSS variables
The Photo Browser component has been refactored to support new configuration options and theming. Users can now control the swipe-to-close behavior via the \swipeToClose\ parameter and close the modal by clicking the backdrop using the new \closeByBackdropClick\ option. The component also introduces \pageBackLinkText\, \popupCloseLinkText\, and \navbarShowCount\ to customize navigation labels and the photo counter display. Styling has been modernized by migrating to CSS custom properties (e.g., \--f7-photobrowser-bg-color\), allowing for easier theme customization, while the underlying implementation now uses a dedicated class structure and JSX rendering.
src/core/components/photo-browser · high confidence
Picker component restructured with native CSS scroll snapping and theme variables
The Picker component in src/core/components/picker has been refactored to use native CSS Scroll Snap for column scrolling, replacing the previous JavaScript-based scroll logic. This change introduces a new set of LESS files (picker.less, picker-vars.less, picker-ios.less, picker-md.less) that define the layout, item heights, and theme-specific styling using CSS custom properties (e.g., --f7-picker-item-height, --f7-picker-item-selected-bg-color). The JavaScript implementation (picker-class.js, picker-column.js) now relies on these CSS properties for sizing and snapping behavior, while the TypeScript definitions (picker.d.ts) and module entry point (picker.js) have been updated to reflect the current API and structure.
src/core/components/picker · high confidence
Placeholder directory created for Vue temporary files
A new directory named 'vue-temp' has been added under the 'src' folder, containing only a '.gitkeep' file to ensure the directory is tracked by version control. This serves as a structural placeholder for future Vue-related temporary files or components.
src/vue-temp · high confidence
Popover component restructured with new positioning, backdrop, and keyboard handling
The Popover component has been refactored to support more flexible positioning and interaction. Users can now force vertical alignment using the new \verticalPosition\ parameter ('auto', 'top', or 'bottom'). The component also introduces \backdropUnique\ to allow multiple popovers to be stacked with exclusive backdrops, and \closeOnEscape\ to dismiss the popover via the ESC key. Additionally, the popover now automatically resizes when the on-screen keyboard appears or disappears, and the iOS theme styling has been updated to use glassmorphism effects.
src/core/components/popover · high confidence
Preloader component rewritten with CSS variables and theme-specific styles
The preloader component has been refactored to use CSS custom properties (e.g., --f7-preloader-color, --f7-preloader-size) for theming, replacing previous hardcoded values. New LESS files define distinct visual styles for iOS (line-based spinner) and Material Design (circle-based spinner) themes, including multi-color support. The JavaScript implementation now supports showing and hiding the preloader in specific elements via new \showIn\ and \hideIn\ methods, in addition to the global overlay. TypeScript definitions have been updated to reflect these new API methods.
src/core/components/preloader · high confidence
Progressbar component restructured with CSS variables and theme-specific styles
The Progressbar component has been refactored to use CSS custom properties (e.g., --f7-progressbar-height, --f7-progressbar-bg-color) for styling, allowing for easier theme customization. New theme-specific LESS files (progressbar-ios.less, progressbar-md.less) define distinct visual behaviors for iOS and Material Design, including updated infinite progress animations and multi-color support. The component now initializes progress values on tab mount and page init, and supports dynamic updates via vnode insert/update hooks.
src/core/components/progressbar · high confidence
Pull-to-refresh component restructured with theme-specific styling and bottom support
The pull-to-refresh component has been refactored to support bottom-positioned refreshes (via the .ptr-bottom class) and improved handling of transparent navbars. The implementation now uses theme-specific LESS files (iOS and Material Design) with CSS variables for sizing and colors, ensuring consistent visual behavior across platforms. The core logic has been updated to detect and adapt to large transparent navbars, and the component now properly manages event listeners during tab and page lifecycle events.
src/core/components/pull-to-refresh · high confidence
Radio component styling migrated to CSS variables and theme-specific LESS files
The Radio component's styling has been refactored to use CSS custom properties (e.g., --f7-radio-size, --f7-radio-active-color) defined in radio-vars.less, replacing hardcoded values. Theme-specific styles for iOS and Material Design are now isolated in radio-ios.less and radio-md.less respectively, allowing for distinct visual treatments such as different border widths and icon positioning logic. The main radio.less file now imports these theme-specific styles conditionally based on the active theme, ensuring that the component adapts its appearance correctly without cross-theme style leakage.
src/core/components/radio · high confidence
Redesigned Floating Action Button with theme-specific styling and morphing support
The Floating Action Button (FAB) component has been updated to support Material Design 3 (MD3) styling and iOS glassmorphism effects, with visual properties now driven by CSS variables for easier customization. The iOS theme features a translucent glass effect with specific light and dark mode shadows, while the MD theme adopts MD3 container colors and rounded corners. Additionally, the component now supports a 'morph' animation, allowing the FAB to smoothly transform into a target element upon opening, and includes a backdrop overlay for better focus management.
src/core/components/fab · high confidence
Redesigned Input component with new styling and validation logic
The Input component has been updated with a complete visual overhaul and enhanced behavior. The styling now uses a new set of CSS variables (e.g., --f7-input-height, --f7-label-text-color) and distinct LESS files for iOS and Material Design themes, introducing new visual states for focused, invalid, and outlined inputs. Functionally, the component now includes robust client-side validation via new \validate\ and \validateInputs\ methods that automatically display error messages and apply invalid styling. Additionally, textareas are now resizable by default, with a new \textarea:resize\ event emitted when their height changes, and the component exposes new DOM events like \input:notempty\ and \input:clear\ to track value changes.
src/core/components/input · high confidence
Redesigned Notification component with Material 3 styling and swipe-to-close
The Notification component has been updated with a new Material 3 design language, featuring increased transition durations (500ms for MD, 450ms for iOS) and larger padding (20px vertical, 16px horizontal) for a more spacious appearance. The component now supports a swipe-to-close gesture, allowing users to dismiss notifications by swiping down, and includes a dedicated close button. Visuals are driven by CSS variables for easy theming, with distinct styles for iOS (glassmorphism, rounded corners) and Material Design (elevation, specific typography). TypeScript definitions have been updated to reflect the new parameters and event handlers.
src/core/components/notification · high confidence
Redesigned iOS and Material Design navbar styles with new CSS variables
The navbar component has been restyled for both iOS and Material Design (MD) themes using a new set of CSS variables (e.g., \--f7-navbar-height\, \--f7-navbar-large-title-font-size\) defined in \navbar-vars.less\. iOS navbars now feature a glassmorphism effect with backdrop blur, rounded pane corners, and specific safe-area handling, while MD navbars have adjusted heights, padding, and large-title collapse animations. The JavaScript logic and TypeScript definitions have been updated to support these visual changes, including refined title centering, large title collapse/expand behaviors, and scroll-hide interactions.
src/core/components/navbar · high confidence
Redesigned page transitions and master-detail layout styles
The Page component now features distinct visual styles and animations for iOS and Material Design themes, defined in new theme-specific LESS files. iOS pages use a 20% offset and shadow effects during transitions, while Material Design pages use a 128px offset with specific cubic-bezier easing curves. A new master-detail layout mode is supported, allowing a fixed-width master sidebar (default 320px) alongside a detail view, with proper handling for right-to-left (RTL) layouts. Page title styling is also updated to use CSS variables for font size, weight, and padding, ensuring consistency across themes.
src/core/components/page · high confidence
Resize module now exposes app dimensions and handles orientation changes
The resize module now provides app width, height, left, and top properties via the app instance, allowing users to programmatically access the app's current size and position. It also emits 'resize' and 'orientationchange' events when the window size or device orientation changes, and includes a specific fix for iPad body scroll behavior during orientation changes.
src/core/modules/resize · high confidence
Router logic restructured into modular files with new guard and async handling
The router module has been refactored from a monolithic structure into distinct files (e.g., \back.js\, \navigate.js\, \modal.js\, \tab.js\) to improve maintainability. A new \appRouterCheck\ utility now prevents the misuse of view-specific router methods on the global app router, throwing an error if called incorrectly. Additionally, the \async-component.js\ module was introduced to standardize how asynchronous components are resolved and rejected, ensuring errors are properly propagated. The \clearPreviousHistory\ functionality was also extracted into its own module.
src/core/modules/router · high confidence
Searchbar component restructured with diacritics removal and theme-specific styling
The Searchbar component has been reorganized into a modular structure, introducing a dedicated \remove-diacritics.js\ utility that allows search queries to ignore accents and special characters (e.g., matching 'cafe' to 'café'). The component now supports configurable input events via the \inputEvents\ parameter and includes new CSS variables and theme-specific styles (iOS and Material Design) for expandable searchbars, backdrop handling, and group title visibility. TypeScript definitions have been updated to reflect these new parameters and the component's API.
src/core/components/searchbar · high confidence
Sheet modal gains swipe-to-step, breakpoints, and push-view effects
The Sheet component now supports multi-step opening via swipe gestures, allowing users to define intermediate states using the \breakpoints\ parameter and control them programmatically with \stepOpen\, \stepClose\, and \setBreakpoint\. It also introduces a \push\ effect that scales and pushes the underlying view when the sheet opens, with configurable \pushBreakpoint\ and \backdropBreakpoint\ settings to manage visual transitions. These changes are accompanied by updated TypeScript definitions and theme-specific styling for iOS and Material Design.
src/core/components/sheet · high confidence
Smart Select component restructured with new configuration options and styling
The Smart Select component has been reorganized into a modular structure (class, constructor, and styles) and introduces several new configuration parameters. Users can now control the sheet modal's backdrop visibility via the \sheetBackdrop\ option, prevent the modal from opening using the \beforeOpen\ event, and specify the position of checkbox/radio icons with \inputIconPosition\. Additionally, the component now supports a \popupTabletFullscreen\ parameter to force full-screen popups on tablets, and the \cssClass\ parameter replaces the previous \className\ for adding custom styles to the container.
src/core/components/smart-select · high confidence
Sortable component receives theme-specific styling and CSS variable configuration
The Sortable component now uses CSS variables for visual customization, introducing specific styles for iOS and Material Design themes. iOS theme files define a 'sort\_ios' icon for the handler, while Material Design uses 'sort\_md'. Theme-specific CSS variables control the handler width (36px for iOS, 42px for MD), handler color, and the background/box-shadow of items during sorting. The main stylesheet now imports these theme-specific files conditionally and applies the new variables to the sortable handler and sorting item states.
src/core/components/sortable · high confidence
Standardized development environment with ESLint, Prettier, and EditorConfig
The project now enforces consistent coding styles across all frameworks (React, Vue, Svelte, Core) by introducing ESLint and Prettier configurations alongside an EditorConfig file. This ensures uniform indentation, line endings, and formatting rules for developers, while specific overrides handle framework-specific syntax like JSX and Svelte components.
(repo-wide) · high confidence
Stepper component restructured with CSS variables and manual input support
The Stepper component has been refactored to use CSS variables for theming, introducing distinct styles for iOS and Material Design (MD) via separate LESS files and a new \stepper-vars.less\ configuration. This change adds a \manualInputMode\ parameter that allows users to type values directly into the input field, supporting fractional numbers with a configurable \decimalPoint\ precision. The component now handles auto-initialization via the \stepper-init\ class and Vite-compatible imports, while also fixing a bug where negative numbers were previously rejected in manual input mode.
src/core/components/stepper · high confidence
Subnavbar component refactored to use CSS variables and theme-specific styles
The Subnavbar component has been updated to rely on CSS custom properties (e.g., --f7-subnavbar-height, --f7-subnavbar-bg-color) for styling, replacing hardcoded values. This change introduces distinct visual behaviors for iOS and Material Design themes: iOS subnavbars now feature a glassmorphism effect with backdrop blur and specific height calculations, while Material Design styles adjust padding and alignment for icon-only links. Additionally, the component now automatically detects and applies a 'page-with-subnavbar' class to pages containing a subnavbar, ensuring correct layout positioning relative to the main navbar.
src/core/components/subnavbar · high confidence
Svelte components migrated to v6 reactive syntax and framework7 v6 APIs
The Svelte component library in src/svelte/components has been rewritten to align with Framework7 v6 and Svelte 5 conventions. The components now utilize Svelte 5's $props, $state, $derived, and $effect runes for reactive state management, replacing previous patterns. The component structure has been updated to use the new {@render children?.()} syntax for slotting content. Additionally, the components now integrate with the Framework7 v6 core API (app.f7) for features like actions, cards, and accordions, and support new v6-specific props such as tonal buttons, outline/inset states, and expanded tooltip capabilities.
src/svelte/components · high confidence
Swipeout component redesigned with Material 3 styles and CSS variables
The Swipeout component has been updated to support new Material 3 (m3) visual styles alongside the existing iOS theme, utilizing a new CSS variable system for theming. This change introduces distinct styling for action buttons and active states per platform, adds overswipe enter/exit events for better interaction feedback, and includes TypeScript definitions for the updated API.
src/core/components/swipeout · high confidence
Swiper component now uses the Swiper Custom Element
The Swiper component implementation has been updated to utilize the Swiper Custom Element (via \swiper/element/bundle\). This change shifts the initialization logic to handle \swiper-container\ elements natively, allowing the component to register the custom element and manage instances through the browser's native element API rather than solely relying on the standard Swiper class constructor. The component still exposes the \app.swiper\ API for programmatic creation and retrieval, but the underlying mechanism for DOM-based initialization now leverages the custom element registration.
src/core/components/swiper · high confidence
Tabs component refactored to support swipeable navigation via Swiper
The tabs component now supports swipeable tab navigation by integrating the Swiper library. When a tab container uses the 'swiper-container' element, the component delegates tab switching to Swiper, enabling touch-swipe interactions between tabs. The implementation also ensures that tab show/hide events are correctly triggered for both animated CSS transitions and Swiper-based swipe transitions, and fixes issues with double event firing and initial tab state for routable swipeable tabs.
src/core/components/tabs · high confidence
Touch interaction module exposes configuration for active states, ripples, and tap-hold behavior
The touch module now provides explicit configuration options for managing touch interactions, including enabling or disabling the active-state class and ripple effects, customizing the CSS selectors for elements that trigger these effects, and adjusting the tap-hold delay and distance thresholds. This allows users to fine-tune visual feedback and gesture sensitivity across different themes and devices.
src/core/modules/touch · high confidence
Touch ripple visual style and configuration updated
The touch ripple effect now uses a blurred radial gradient for interactive elements like buttons, links, and list items, replacing the previous solid-color approach. This change is driven by new CSS variables (--f7-touch-ripple-black, --f7-touch-ripple-white, and --f7-touch-ripple-color) that define the ripple appearance and automatically adapt to dark mode. The underlying JavaScript class has been restructured to support an 'inset' mode for specific elements and manages the ripple lifecycle with improved animation handling.
src/core/components/touch-ripple · high confidence
Typography component refactored with CSS variables and half-value spacing utilities
The typography module has been restructured to use CSS custom properties for padding and margin (defaulting to 16px), enabling easier theme customization. Additionally, new utility classes have been introduced to apply half-values for padding and margins (e.g., \.padding-half\, \.margin-vertical-half\), and helper classes for flex-direction and alignment have been added to support more flexible layout control within typography contexts.
src/core/components/typography · high confidence
Utils module now delegates to shared utilities
The utils module in src/core/modules/utils has been refactored to import and expose the utility functions from the shared utils location (src/core/shared/utils.js) rather than defining them locally. This change ensures that the utils module acts as a wrapper, attaching the shared utility methods to both the app prototype and static properties, maintaining the existing API surface while centralizing the implementation.
src/core/modules/utils · high confidence
Vue Kitchen Sink app structure and configuration
The Vue Kitchen Sink application entry point and configuration have been established, including the main app initialization, routing definitions, and state management setup. The app now supports theme switching via URL parameters, safe-area styling for specific demos, and dark mode toggling. Key UI behaviors include closing modals, sheets, popovers, and actions on escape key press, and enabling browser history for example previews. The main view is configured with safe-area classes, a master-detail breakpoint, and conditional swipe-back behavior based on history mode.
kitchen-sink/vue/src · high confidence
Vue Kitchen Sink demo app scaffolded with Vite
The Vue Kitchen Sink demo application has been restructured to use Vite as its build tool, replacing the previous setup. This change introduces a new entry point in index.html, a Vite configuration file (vite.config.js) that sets up the Vue plugin and resolves Framework7 bundles, and includes static assets like the autocomplete language data. Users will now interact with the demo app built via this new Vite-based pipeline.
kitchen-sink/vue · high confidence
Vue Kitchen Sink demo pages rewritten for modern Framework7 APIs
The Vue Kitchen Sink demo pages have been completely rewritten to align with the latest Framework7 Vue component API. This update introduces new demonstration pages for features such as the 404 error view, breadcrumbs, and area charts, while significantly updating existing demos for components like cards, calendars, and action sheets. Users will see modernized UI patterns, including support for new card styles (outline, raised), expanded calendar interaction modes (date range, multiple values), and improved component usage via Vue's Composition API and new event hooks.
kitchen-sink/vue/src/pages · high confidence
Vue integration refactored with new shared utilities and router support
The Vue integration in src/vue/shared has been restructured to provide a more robust foundation for Framework7 components. This change introduces a new components-router implementation that handles page, tab, and modal component loading, ensuring correct DOM tracking and initial route prop resolution. A new plugin system is established to initialize the Framework7 instance and register the router extensions. Additionally, a suite of Vue composables (useStore, useTheme, useTooltip, useSmartSelect, useTab, useIcon, useRouteProps) and shared mixins for color, router, and action attributes are added to streamline component development and state management within the Vue ecosystem.
src/vue/shared · high confidence
iOS and Material Design icon styles are now theme-specific
The icon component now applies distinct visual styles based on the active theme. iOS-specific icons (back, forward, close, etc.) are sized at 12x20px or 20x20px with specific font glyphs, while Material Design icons are uniformly 24x24px with their own corresponding glyphs. This separation ensures that icons render correctly according to the platform's design language when the iOS or Material theme is active.
src/core/components/icon · high confidence
Dependencies
Framework7 9.2.0 release with updated dependencies
This release updates the Framework7 core and framework packages (React, Vue, Svelte) to version 9.2.0. It includes dependency updates for Swiper to 12.1.2, DOM7 to 4.0.6, and Skeleton Elements to 4.0.1, along with updates to build tools like Vite, Rollup, and Babel.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 31 → 32 (+1.5)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 27 → 27 (+0.0)
- Architecture 97 → 87 (-10.0)
- Maturity 60 → 60 (+0.0)
- Readiness 23 → 25 (+2.2)
- Security 55 → 72 (+17.1)
- Accessibility 31 → 31 (+0.0)
- Performance 60 (new)
Resolved (5)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- High CVE: [GHSA redacted] (package-lock.json)
New (7)
- Medium: security finding (details withheld)
- Outdated (npm): path-to-regexp
- Outdated (npm): swiper
- Projects may be oversized for their cohesion
- find-common-css-vars.fs.readdirSync("./src/core/components").forEach() (cognitive 22) (scripts/find-common-css-vars.js)
- find-common-css-vars.fs.readdirSync("./src/core/components").forEach() (cyclomatic 20) (scripts/find-common-css-vars.js)
- link.Link (cognitive 18) (src/react/components/link.jsx)
Changes since last survey
- 6 commits — 3 feature/other, 3 fixes
By area
- src/core — 4 commits
- (root) — 1 commit
- src/react — 1 commit
Notable commits
- fix: fix(input): reset outlined input bottom margin in iOS theme
- fix: fix(login-screen): match outlined label backgrounds to login screen
- fix: fix(sheet): reserve toolbar space in default bottom sheets
- change: 9.2.0
- change: Prevent chip delete event from bubbling (#4367)
- change: feat(link): support disabled links across component frameworks
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
framework7io/framework7 was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 7668f883c29f69dd2ad7bd8ac3b35b9124082b0b — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.