Repository navigation
✨ New Features
-
条件编译与构建配置
- 统一
mode与srcMode的职责:条件文件后缀、区块mode和节点@mode仅筛选输出目标,命中后仍按源码方言执行跨端转换;@_mode保留为@mode的兼容别名。 - 新增
srcModeRules与区块src-mode,显式声明目标平台原生源码。旧modeRules保留为兼容别名,但不能与srcModeRules同时配置。依赖.ali.mpx、mode="ali"或@ali跳过转换的项目需调整源码方言声明;import/include引入的原生模板需对资源本身配置srcModeRules。 - 新增
webConfig.asyncCommonSubpackage与rnConfig.asyncCommonSubpackage,默认抽取公共异步分包,设为false时将公共模块合并进 App 主入口。 - RN 分包转移配置统一收敛至
rnConfig.transSubpackageRules,支持页面、组件与require.async引用的模块,兼容原顶层配置。
- 统一
-
跨端输出 React Native
- 新增
mpx.config.rnConfig.dimensionsBase,统一控制响应式单位、媒体查询和onResize的尺寸基准,默认由 Screen 改为 Window;设为'screen'可保留旧版计算方式。getDimensionsInfo()支持指定读取 Window / Screen 尺寸,并返回经过customDimensions处理的尺寸副本。 - 优化尺寸变化时的更新范围,仅刷新依赖响应式单位或媒体查询的组件,并补齐独立组件的尺寸响应能力。
section-list新增enable-item-exposure、item-exposure-threshold和binditemexposure,支持列表项、分组头尾的曝光通知,返回原始数据、下标与布局信息;分组头曝光暂不支持吸顶场景。movable-view新增workletChange,支持在 UI 线程接收{ x, y, source }位置变化,不受 JS 事件节流影响。- 新增
pageWrapperHOC导出,支持独立页面接入导航栏、安全区、键盘避让和 Portal 容器。 - 支持 App
onPageNotFound及mpx.onPageNotFound/offPageNotFound,在启动入口未注册时通知并回退首页;运行中的路由失败仍通过对应 API 的fail处理。 connectSocket支持通过header传递握手请求头。image与view背景图片默认启用@d11/react-native-fast-image;需要使用 RN 原生 Image 时,显式传入enable-fast-image="{{false}}"。- 移除异步分包加载的框架超时计时器,
rnConfig.asyncChunk.timeout不再生效,超时策略由宿主loadChunkAsync实现负责。
- 新增
-
跨端输出 Web
- 新增内置标题栏,通过
mpx.config.webConfig.enableTitleBar开启,支持页面标题、返回按钮与安全区;navigationStyle: 'custom'时隐藏,非 iOS 顶部安全区可通过safeAreaInsetTop配置。 - 页面
page选择器支持 scoped 隔离,可通过<style scoped>或autoScopeRules限定当前页面的样式作用范围。 - 补齐
mpx.onPageNotFound/offPageNotFound启动入口监听,与 App 的onPageNotFound配合处理入口页面不存在的场景。
- 新增内置标题栏,通过
-
支付宝小程序
- 支持将
navigationStyle: 'custom'转换为透明、可穿透的自定义导航栏配置,页面显式设置'default'时可覆盖 App 的透明导航配置。 - 支持
scroll-view的show-scrollbar布尔隐藏控制,并补充text默认继承父节点white-space的兼容样式。
- 支持将
-
UnoCSS 与开发工具
- UnoCSS 支持扫描
wx:class对象字面量中的静态类名,补齐特殊字符类名与 alias 处理,并遵循scan范围配置;移除自定义escapeMap,统一使用内置转义规则。 @mpxjs/perf新增aggrStart/aggrEnd聚合统计与traceStart/traceEnd区段时间线,支持配置 mark / trace 容量;内建探针扩展至小程序、Web 与 RN 的实例初始化、渲染、生命周期和卸载阶段。- 性能探针保留
scopeStart/scopeEnd、measureStart/measureEnd兼容接口;类型AggResult更名为AggrResult,MarkEvent.at更名为start,新增timestamp/info,自定义 Reporter 需同步调整。 mpx.use()成功安装插件后设置插件的__installed标记,便于外部判断安装状态。
- UnoCSS 支持扫描
🐛 Bug Fixes
-
跨端输出 React Native
- 修复
externalClasses新增、更新或移除后样式未刷新,以及独立组件外部样式初始化不完整的问题。 - 修复响应式样式在组件销毁、后台页面恢复和尺寸变化后更新失效的问题;修复媒体查询范围判断、未命中规则仍生效及
!important优先级丢失的问题。 - 修复图片切换、尺寸获取与
widthFix/heightFix场景的尺寸更新问题,避免将 AndroidonLoad的渲染尺寸作为图片原始尺寸,并减少 SVG 加载后的额外渲染。 - 修复背景图片尺寸与位置计算、异步尺寸结果更新及渐变绘制尺寸问题;对不支持的 SVG 背景图明确报错并丢弃。
- 修复 Android 输入框切换时意外失焦、键盘收起,以及
hover-class="none"仍启用点击态的问题。 - 修复
movable-view的change事件触发时机、source判定和 worklet 回调闭包更新问题。 - 修复
createIntersectionObserver相交区域计算及宽高缺失,完善断开和组件销毁时的清理,避免断开后继续回调;已断开的实例需重新创建。 - 修复启动参数未正确传入首个页面和 App 生命周期、同路径新页面误继承初始参数的问题;无效入口参数不再传入回退首页。
- 修复
forceUpdate/setData更新回调时序,以及页面容器与 Portal 挂载、清理相关问题。 - 修复蓝牙扫描
powerLevel未生效,以及多项蓝牙 API 参数校验失败后错误调用成功回调的问题。 removeStorageSync/clearStorageSync不再用异步操作模拟同步接口,改为明确提示不支持;请使用removeStorage/clearStorage。- 修复 RN 样式选择器校验遗漏,不支持的伪类、伪元素与组合选择器会在构建时报错;补充
@font-face不受支持的提示。
- 修复
-
跨端输出 Web
- 修复
selectComponent/selectAllComponents对动态 class、ID 与复合选择器的匹配,以及模板包装组件干扰查询的问题;修复节点查询空匹配和selectViewport()作用域问题。 - 修复路由参数或目标页面校验失败后仍继续执行,以及
switchTab/reLaunch部分场景回调异常的问题。 - 修复音频
stop()/pause()的事件语义及监听移除行为,避免停止操作误触发暂停事件。 - 修复
nextTick未等待 Vue 视图更新、scroll-view内容区域被压缩导致滚动异常,以及表单重置值和 reset 事件数据不一致的问题。 - 修复模板 filter 表达式处理及动态无障碍属性绑定,支持将
aria-role转换为role。
- 修复
-
跨端 API 与构建
- 完善 Web / RN 不支持的选项、生命周期与 API 字段提示,并支持通过
implement登记业务适配;修复事件通道、部分 API 错误信息与off*无参移除监听的行为。 - 修复支付宝
page-container的beforeleave事件名称转换,以及支付宝 / Web 框架默认样式覆盖业务样式的问题。 - 修复
@mpxjs/fetch预请求更新链路在请求失败时产生额外未处理 Promise rejection 的问题。 - 修复
.mpx样式条件编译误处理非样式区块的问题;非<style>区域使用样式条件指令时明确报错,并修复 Stylus 裁剪后的缩进解析错误。 - 修复
require.async兼容 Webpack 5.109 位置信息 API、RN 分包模块转移至主包后的加载,以及小程序 chunk 全局对象冲突问题。 - 稳定页面与组件映射的输出顺序,修复 UnoCSS 动态类简写条件与 WXS key 转义问题,并将相关 UnoCSS 依赖固定为
66.7.5。 - 补齐
@mpxjs/api-proxy的 lodash 运行时依赖,将@mpxjs/pinia的 Web 相关 peerDependencies 标记为可选。
- 完善 Web / RN 不支持的选项、生命周期与 API 字段提示,并支持通过