Introduction

What's new

Changes in each POS Apps SDK release, and how to update a project.

View Markdown

Changes to the POS Apps SDK (@pancake-pos/ui-extensions, @pancake-pos/ui, @pancake-pos/app-cli, @pancake-pos/eslint-plugin, create-pos-app). The packages are released together under one version number.

  • Deployed apps need nothing: POS serves the runtime, so fixes and new elements take effect right away. Everything in api_version 2026-01 is additive and does not break existing code.
  • Projects in progress should update to get the new types, code rules, docs and MCP examples. The CLI tells you when a new version is out (Updating the SDK):
Terminal
npm i @pancake-pos/ui@latest @pancake-pos/ui-extensions@latest
npm i -D @pancake-pos/app-cli@latest @pancake-pos/eslint-plugin@latest

If you use the MCP server, restart it after updating.

2026.1.9

  • The CLI tells you about a newer SDK: npm run check, build, deploy and dev print the update command; --json results and the MCP tools (check_app, deploy, get_errors) carry an update field so AI tools can offer the update. Turn it off with POS_APP_NO_UPDATE_CHECK=1.
  • Rule pos-app/valid-elements: an unknown element, property or event that looks like no known name now suggests updating the SDK (usually code written from newer docs).
  • This What's new page.

2026.1.8

Components

  • New: pos-switch, pos-radio-group, pos-time-picker, pos-file-input (POS reads CSV/Excel into a table for the app).
  • pos-table: rows take Open API records as they are and a column key is a path (customer.name, items.0.sku); an "Actions" column with rowActions and onRowAction; copyable columns.
  • pos-select: search through the API with onSearch and loading. pos-date-picker: time to pick a time as well.
  • pos-modal: width (520, 720, 1000 px). The footer of pos-modal and pos-drawer also takes pos-menu-button and pos-link.

API (runtime-api)

  • pos.api.paginate loads many pages in parallel within the rate limit; pos.api.get(path, { cache }) keeps catalogs in memory.
  • pos.download({ sheet }): POS builds an .xlsx or .csv file from columns and rows.
  • pos.navigate({ resource: 'order', id }) opens an order in a new tab. pos.format formats numbers, money and dates like POS. pos.clipboard.copy.

Runtime and tools

  • A value that breaks the schema (wrong type, misplaced element, text too long) no longer stops the extension: POS drops the bad part and writes it to the error log.
  • Development mode writes "Standard screens" warnings (standard_screen) to the error log, read with get_errors.
  • MCP tool get_example: complete sample apps (report, list with a detail drawer, file import, order form block, print template, hook).

2026.1.7

  • Elements for report and list screens: pos-stat, pos-date-range, pos-menu-button, pos-description-list, pos-timeline, pos-progress, pos-empty, pos-drawer.
  • pos-table: column format badge, link, percent, tones, subtitle, sortable, fixed, ellipsis; sort, summary, selectable, selected; events onSortChange, onSelectionChange, onCellClick.
  • pos-chart: combined bars and lines, horizontal bars, percent. pos-button: icon, tooltip.
  • pos.download saves a file the app made.
  • Rule pos-app/standard-screen (warning) following Standard screens; the create-pos-app template has a sample report page.
  • MCP tools search_api and get_api look up Open API endpoints.
  • Fix: development mode could not load data when POS called the API through pos.pancake.vn.

2026.1.6

  • Docs and the template run the CLI through npm run … or npx @pancake-pos/app-cli … (the pos-app package on npm is not Pancake's).

2026.1.5

  • Customer targets: customer.details.action, customer.index.action, customer.index.selection-action, customer.index.column.

2026.1.4

  • Worker UI pages (app.page with render: "worker") and page elements: pos-page, pos-tabs, pos-filter-bar, pos-chart.
  • List columns (<resource>.index.column), app print templates (<resource>.print-action), the customer profile block (customer.details.block).