Use this guide to migrate from QIconPicker v2.x to QIconPicker v3.0.0-rc.0.
QIconPicker v3 targets Vue 3, Quasar 2, and Quasar CLI Vite 3. If your app still uses Vue 2 or
@quasar/app-webpack, migrate the app before installing QIconPicker v3.
This guide focuses on the changes most likely to affect app code. Check the Releases page for the latest release-candidate notes, and please open an issue or PR if something is missing.
QIconPicker v3.0.0 RC
QIconPicker v3 prepares the package for Quasar CLI Vite 3 and the shared app-extension workspace standard.
Important changes:
- The app extension is Vite-only and requires
@quasar/app-vite>=3.0.0-rc.2. - The webpack app-extension path is no longer supported.
- The package now uses ESM-first exports for Quasar/Vite consumers.
- UMD bundles remain available for CDN and CodePen examples.
- Built-in icon-set metadata now lazy loads from
@quasar/extrasv2 instead of generated icon arrays committed in this repo. - The built-in Font Awesome, Ionicons, and MDI families now follow the current Extras v2 names:
fontawesome-v7,ionicons-v8, andmdi-v7. - The Material Symbols families are available as
material-symbols-outlined,material-symbols-rounded, andmaterial-symbols-sharp. - Source files are TypeScript and SCSS.
- Documentation examples now include GitHub source and CodePen playground links through Q-Press where the example can run in UMD.
- Repository tooling now uses pnpm, oxlint, oxfmt, Vitest, and Rolldown.
Requirements
| Area | QIconPicker v3 RC |
|---|---|
| Vue | Vue 3 |
| Quasar | Quasar 2 |
| Quasar CLI | @quasar/app-vite >=3.0.0-rc.2 |
| App extension | Vite only |
| Icon metadata source | @quasar/extras v2 |
| Node.js for this repo and CI | >=22.13 |
| Package manager for this repo | pnpm >=11.4.0 |
Installing the release candidate
QIconPicker v3 release candidates are published on the latest dist tag.
quasar ext add @quasar/qiconpickerApp Extension Changes
The QIconPicker app extension now targets Quasar CLI Vite only.
- Install it only in apps using
@quasar/app-vite>=3.0.0-rc.2. - The extension registers the Vite boot file and stylesheet.
- The extension remains the recommended install path for Quasar apps because it handles plugin registration for you.
If you maintain your own boot file, import defineBoot from #q-app:
import { defineBoot } from '#q-app'
import Plugin from '@quasar/quasar-ui-qiconpicker'
import '@quasar/quasar-ui-qiconpicker/dist/index.css'
export default defineBoot(({ app }) => {
app.use(Plugin)
})Built-In Icon Sets
QIconPicker v3 uses @quasar/extras v2 as the source of truth for built-in icon sets. Your app should have @quasar/extras@2 installed when using the icon-set prop.
Supported built-in icon-set values are:
material-iconsmaterial-icons-outlinedmaterial-icons-roundmaterial-icons-sharpmaterial-symbols-outlinedmaterial-symbols-roundedmaterial-symbols-sharpionicons-v8mdi-v7fontawesome-v7eva-iconsthemifyline-awesomebootstrap-icons
If you previously imported generated icon arrays from QIconPicker, switch to the icon-set prop or provide your own icons array.
<q-icon-picker v-model="icon" icon-set="material-icons" />For custom collections, pass an icons array. The name value is emitted by v-model, and the optional icon value can provide SVG path data when you do not want to rely on an icon font.
interface PickerIcon {
PickerIcon.name: stringname: string
PickerIcon.icon?: string | undefinedicon?: string
}
const const icons: PickerIcon[]icons: PickerIcon[] = [{ PickerIcon.name: stringname: 'camera_alt' }, { PickerIcon.name: stringname: 'photo_camera' }, { PickerIcon.name: stringname: 'videocam' }]
icons[0]?.PickerIcon.name: stringnameDirect UI Package Usage
Compiled package imports are the recommended path:
import { const QIconPicker: ComponentOptionsQIconPicker } from '@quasar/quasar-ui-qiconpicker'
QIconPickerImport the component stylesheet alongside the component:
import '@quasar/quasar-ui-qiconpicker/dist/index.css'Direct src/ imports are still available for advanced use cases. With Quasar CLI Vite 3, dependency transpilation is automatic, so no additional transpile-dependency configuration is needed.
import Plugin from '@quasar/quasar-ui-qiconpicker/src/index'
import '@quasar/quasar-ui-qiconpicker/src/index.scss'CodePen And UMD Examples
The documentation examples use the UMD bundle when opening in CodePen.
If you maintain custom CodePen or script-tag examples, load the QIconPicker CSS and UMD bundle after Quasar:
<link
href="https://cdn.jsdelivr.net/npm/@quasar/quasar-ui-qiconpicker@3.0.0-rc.0/dist/index.min.css"
rel="stylesheet"
/>
<script src="https://cdn.jsdelivr.net/npm/@quasar/quasar-ui-qiconpicker@3.0.0-rc.0/dist/index.umd.min.js"></script>Then register the plugin from the browser global:
app.use(QIconPicker)The UMD build is intended for manually supplied icons arrays. Built-in icon-set values rely on bundler support for @quasar/extras lazy imports, so the docs only enable CodePen for examples that can run from UMD without a bundler.
Contributor Tooling Changes
The QIconPicker repository now uses:
pnpm@11.4.0- Node.js
>=22.13 oxlintinstead of ESLintoxfmtinstead of Prettier- Vitest for runtime coverage
- Rolldown for UI package builds
Use the existing scripts for local verification:
pnpm format:check
pnpm lint
pnpm test
pnpm build
pnpm typecheck