升级前必读
- Q:如何判断当前应用是否为最新版本?
以「页面」为例,应用编辑器页面为下图效果,即为 2.0 版本,无需更新升级。
250px|700px|reset
- Q:本次升级过程有哪些注意点?
「页面」模块
(一)新版能力要点
- 布局和样式能力提升
- 支持栅格化布局,组件可水平方向排布,能够实现自适应宽度、固定宽度、填充宽度等效果
250px|700px|reset
- 定位能力:包括绝对定位、固定、粘滞等定位能力
250px|700px|reset
- 所有组件均支持通用的样式配置,支持配置文字、背景、边框、阴影的样式
250px|700px|reset
- 页面及组件,关联能力增强
组件值暴露,支持动态绑定数据
组件支持暴露值,并可以在其他组件内消费
250px|700px|reset
支持页面间传参
支持灵活定义页面入参,页面间跳转可以灵活传递信息
250px|700px|reset
- 事件动作功能增强
支持「调用组件方法」
弹窗类组件、表格组件支持暴露组件方法,触发事件时可调用,以操作其他组件
250px|700px|reset
事件动作支持串并行编排
一个事件触发后执行多个动作,支持串行、并行
250px|700px|reset
新版「执行 JS 动作」上线
开发体验提升
- 编辑态支持“所见即所得”,例如调用数据查询(外部数据源)、执行流程、调用云函数、操作内置对象等
- 组件暴露 API 的支持语法提示
Pro Code 能力提升
- 支持消费流程、云函数返回值,支持 Javascript 基础类型 Array、Object
- 支持气泡弹窗提示
250px|700px|reset
- 支持搭建移动端 H5
2.0 中,页面编辑器可搭建移动端 H5,且可用组件和 PC 端保持一致;搭建时,组件均支持选择在哪一端展示,以实现 PC、移动双端不同的搭建诉求。
- 搭建的 H5 页面支持在飞书内访问,也可以在手机浏览器访问
- 移动端 H5 和 PC 端具有相同的 URL,因此可以实现一个 URL 在 PC、移动端均可访问
250px|700px|reset
250px|700px|reset
- 新增「数据请求」
当想要基于飞书低代码平台页面访问、调用内外部的数据服务时,如:公司内部的数据库、现有系统的 API、飞书开放平台 API 等,可通过「数据请求」相关能力,将飞书低代码平台与外部数据服务创建数据连接。
250px|700px|reset

- 新版公式上线
当需要动态控制按钮显隐、字段必填时,可以使用新版公式来消费页面中的数据、函数来实现丰富的逻辑表达式,同时新版公式在体验层面也有所升级,支持原位编写。新版公式不再支持分开配置开发环境和线上环境。
250px|700px|reset
- 新版自定义组件开发规范
更丰富的 API、Setter;更完整的组件 Meta 协议,用于描述属性、事件、插槽、样式、暴露的状态;更解耦的组件间通信方式。
- 无代码搭建自定义组件
支持无代码搭建自定义组件(和低代码自定义组件不同),且支持定义组件属性,并在该应用的所有页面中可用。
(二)能力前后对比
桌面端
仅 2.0 桌面端支持的能力
- 栅格化布局能力、绝对定位能力
- 组件样式配置能力
- 事件动作串并行、各处动作统一
- 组件值暴露和消费
- 组件:
- 导航:顶导航、侧导航
- 通用:文本、标签、图标、按钮
- 数据展示:表格容器、列表容器
- 数据图表:条形图、进度图、瀑布图
移动端
(三)注意事项 & 风险提示
- 产品能力和 1.0 不兼容点
需要用户处理的不兼容点速览:
不兼容点 | 解决方案 | 解决时机 |
不支持自定义地址 | 升级前将全部自定义地址清除 | 升级前手动操作 |
「执行操作」升级为「执行流程」 | 升级前进入页面操作并提交 | 升级前手动操作 |
不再支持部分历史物料 | 升级前重新提交页面 | 升级前手动操作 |
公式中存在失效变量 | 修改失效变量 | 升级前手动操作 |
页面有尚未提交的修改 | 提交页面或撤销修改 | 升级前手动操作 |
不再支持「数据看板」、「旧版报表」 | 用图表组件代替 | 升级后重新搭建 |
图表不支持打开明细、多对象 | 用2.0图表组件代替 | 升级后重新搭建 |
不再支持「多语变量」 | 使用文本变量和表达式搭建 | 升级后重新搭建 |
自定义组件仅部分兼容 | 可能需要修改代码 | 升级后重新搭建 |
不支持自定义地址
升级前手动操作
- 若应用中存在页面配置了自定义地址,将无法升级当前应用。
- 目前必须将全部自定义地址清除,才能升级,但会影响线上访问,请谨慎操作。
- 后续会提供无损解决方案,敬请期待。
250px|700px|reset
页面有尚未提交的修改
升级前手动操作
- 若应用中存在页面有尚未提交的修改,将无法升级当前应用。请进入页面进行提交或撤销修改。
250px|700px|reset
页面类型不再支持「详情页」
用户无需处理
- 替代搭建方案:给页面配置可传入的变量参数,其他页面跳转该页面时,可传入对应变量,以实现旧版详情页的效果
250px|700px|reset
- 1.0 的详情页的页面布局,可以选择「含头图的单页」
页面形态不再提供弹窗、侧拉窗、浮层形态
用户无需处理
- 1.0创建页面时,如果选择页面形态为弹窗、浮层
- 替代方案:在页面内提供「弹窗」、「侧拉窗」、「气泡卡片」组件
- 在弹窗组件内配置信息,通过「调用组件方法」,实现弹窗的开启、关闭
250px|700px|reset
不再支持「记录标题栏」、「分栏」组件
用户无需处理
- 记录标题栏:以「标题栏」组件的能力替代。
- 分栏:以栅格布局能力替代
不再支持「旧版报表」、「数据看板」组件
升级后重新搭建
- 可以在 2.0 中直接使用数据图表类组件搭建:
250px|700px|reset
图表不支持打开明细、多对象
升级后重新搭建
- 可以在 2.0 中直接使用数据图表类组件搭建
数据表格中,多值字段暂不支持点击触发事件
用户无需处理
2.0 数据表格中暂不支持
- 多值字段点击打开详情页
自定义组件部分兼容
可能需要修改代码
- 「页面 」2.0 将会 部分兼容 1.0 自定义组件,对于兼容的部分的DX自定义组件无需改动即可在页面 2.0 内运行,具体不兼容范围详见:自定义组件兼容手册 。
不再支持「系统默认详情页」
用户无需处理
- 1.0创建页面时的系统默认详情页,在升级2.0后会被迁移成普通的页面。
「执行操作」升级为「执行流程」
升级前手动操作
- 升级前手动操作:打开页面对应事件面板,点击「编辑动作」-「确定」,并提交页面,即可升级至「执行流程」
250px|700px|reset
不再支持 1.0 历史组件
升级前手动操作
- 1.0 页面如果存在历史组件 Topbar、Menu.Container、Background、Menu,升级前打开 1.0 页面点击「提交」。
- 1.0 页面如果存在历史组件 MinAppLowVersion、SimpleTabs、ListCompositeType,升级前打开 1.0 页面,点击对应组件打开属性面板,再点击「提交」。
- 2.0 将不再提供上述组件。
变量类型不再支持「多语变量」
升级后重新搭建
- 升级后,需要新建两个文本变量配合表达式来实现
移动端不再支持飞书小程序,支持 H5
用户无需处理
- Builder 2.0 不提供小程序搭建能力,也不支持发布飞书小程序
- Builder 2.0 支持搭建移动端 H5 页面。支持自适应,可实现一次搭建 PC/移动 双端可用,同样也支持将 H5 发布到飞书工作台,用户可以在飞书内搜索到该应用的移动端并访问
- 对于移动端开发者,H5 容器内可用的飞书 API 能力,和小程序有所差异。
移动端不再支持设置顶部栏
用户无需处理
- 升级后,不展示标题,顶栏按钮用悬浮按钮替代
250px|700px|reset
移动端「导航」组件不支持设置按钮tab
用户无需处理
- 升级后,自动变为「按钮」组件,实现类似效果
250px|700px|reset
移动端不再支持设置背景色和背景图、背景高度
用户无需处理
- 升级后,自动变为「区块」组件,实现类似效果
250px|700px|reset
250px|700px|reset
移动端不再支持「提示栏」「底部按钮」
用户无需处理
- 升级后,自动变为用2.0组件实现类似效果
250px|700px|reset
250px|700px|reset
移动端标题栏不再支持配置标题颜色
用户无需处理
- 升级后,自动变为用2.0组件实现类似效果
250px|700px|reset
移动端「列表」不再支持搜索、底部按钮
用户无需处理
- 搜索:升级后,自动变为用「文本输入」组件,实现类似效果
250px|700px|reset
250px|700px|reset
- 底部按钮:升级后,自动变为用「区块 」+「按钮组」组件,实现类似效果
移动端「记录详情」不再支持「数据-入口」
无需搭建,迁移有损
- 升级后,自动变为用2.0组件,实现类似效果,但运行时无法跟随整体loading
250px|700px|reset
250px|700px|reset
移动端宫格项布局改为垂直布局
用户无需处理
- 2.0 宫格项移动端为垂直布局
公式中存在失效变量
升级前手动操作
- 升级前手动操作:修改公式中的失效变量,确保公式能正常保存提交。
多环境配置下线
无需处理
- 页面设计中不再支持开发环境和线上环境分开配置,如果左值是记录类型字段,升级后会自动批量生成环境变量替换右值的具体记录
250px|700px|reset
- 搭建方式有明显变化,搭建成本显著提升
由于 2.0 组件、样式能力都变得更加原子化,以满足更灵活的搭建需要,因此搭建成本会显著提升,这将导致在很多场景中,搭建耗时显著变长。
- 提供了原子化的样式能力,支持配置文本、背景、边框、阴影样式,配置相比旧版复杂很多
250px|700px|reset
- 可配合原子组件实现较复杂的表格/列表,但同样,配置的复杂度提升比较大
250px|700px|reset
- 其他
由于技术限制,目前页面搭建器仅能确保满足特定限制下的搭建态和终端页面性能
- 单一页面内,组件节点数量不超过 1000 个
- 单一页面内,页面变量数不超过 100 个
- 自定义组件右侧面板的设置项不超过 100 个
- 数据表格的列数不超过 100 个
随着性能优化,以上限制有可能逐步提升。
另外:升级成功后,通过「应用管理页面-开发环境-测试应用」访问,以及通过首页中「测试」访问的都是 1.0 预览页。需要将应用发布后,从这两个入口可访问 2.0 预览页。
「流程」模块
(一)新版能力要点
- 画布升级:画布调整为居中布局,支持灵活展开收起、节点移动、圈选操作等,提升编排灵活性
- 能力强化:新增条件循环、子流程、错误监控与处理等节点,无码搭建能力大幅提升
- 性能提升:画布性能、引擎性能优化,画布配置、流程运行的速度提升
- 画布升级
- 能力强化
- 性能提升
(二)注意事项和风险提示
- 获取记录
由于流程运行内存限制,单次获取记录条数上限从 10,000 调整为 500 条,支持通过条件循环,分批次获取,分批查询可处理的数据量级在 25w+
升级后,应用中已有流程,若查询超过 500 条,可兼容执行,不影响线上流程运行;若再次进行编辑,则会有单次最多 500 条的限制,若希望处理超过 500 条的数据,需要配置条件循环来进行分批处理;
升级前:不允许配置获取条数,单次最多 10,000 条 | 升级后:可配置获取条数,单次最多 500,可分页查询 |
250px|700px|reset | 250px|700px|reset |
- Node.js
不再支持 Node.js 节点,升级后,原 「Node.js」 节点将默认兼容为「调用函数」节点。
功能说明:通过「调用函数」可以实现同一函数的跨流程、跨节点复用;但是函数无法直接通过 context.flow.variables 访问流程中的数据,需要通过出入参配置,实现数据的传递;
- 飞书消息与群组
不再支持「飞书消息与群组」的连接器,拆分为「飞书消息」、「飞书群组」两个连接器。
升级后,「飞书消息与群组」将根据配置,默认兼容为新版「飞书消息」、「飞书群组」节点
(三)迁移不可兼容点处理方式
- 函数节点使用不兼容 API 「update variable」
函数中,不再支持通过「update variable」的方法,直接更新流程变量。
需要改为:利用函数出参,将需要更新的值,更新至函数出参,在流程中,再将函数出参来更新流程中的变量。
具体步骤为:
- 找到 update variable 方法,将需要更新的变量,创建为函数出参
- 删除相关代码,并按更新逻辑,更新函数出参值
250px|700px|reset
- 在流程中,将函数出参赋值更新给流程变量
250px|700px|reset
- 函数节点中有间接引用云函数
需检查代码中,是否使用「context.flow.updateVariable」:
- 若未使用,则无需修改
- 若使用,需参考「1. 函数节点使用不兼容 API 「update variable」」的方案,处理
- 函数节点中使用了context.workflow.variables
函数中,不再支持通过「context.workflow.variables」的方法,使用流程中的变量。
需要改为:利用函数入参,将需要使用的变量值,通过函数入参进行传入。
具体步骤为:
- 找到 context.workflow.variables 方法,将使用到的变量,创建为函数入参
- 删除 context.workflow.variables 方法,并将使用到的变量,替换为函数入参
250px|700px|reset
- 在流程中,将使用到的变量,给函数入参赋值
250px|700px|reset
「权限」模块
(一)新版能力要点
- 角色中权限点更完备
- 可以分别配置每个数据模型的操作(增删改查)权限、分别设置每个字段的查看和编辑权限,提升了权限配置的灵活性。
- 配置数据模型的操作权限
250px|700px|reset
- 配置字段的查看和编辑权限
250px|700px|reset
- 支持对「前端SDK调用」的函数控制调用权限,无权限将调用失败。
250px|700px|reset
- 记录权限配置更灵活
- 记录权限按照数据模型进行管理:单个数据模型可添加 n 条记录权限规则
250px|700px|reset
- 记录权限不再与角色绑定,而是直接授予用户,授予用户的方式有四种模式:
- 全部:授予应用可用范围中的全部用户
- 指定用户:授予指定某些用户
- 指定角色成员:该规则对指定角色的成员生效,通过该模式可以实现不同角色的记录权限共用
- 自定义:根据用户的属性授权
250px|700px|reset
- 支持对记录的操作权限进行单独配置,以实现让某用户能编辑部分记录,而对其他记录只有查看权限的效果。
- 全部:选择「全部」时,用户对记录的操作权限完全由其角色决定,如用户所属角色只有「图书对象」的查看权限,即使此处选择了「全部」也仅可对这些记录有查看权限。
- 自定义:选择「自定义」时,用户对记录的操作权限是用户角色与此处所选权限的交集,如用户所属角色对「图书对象」的编辑权限,此处选择了「查看」,则仅可对这些记录有查看权限。
250px|700px|reset
- 功能和记录权限分别取并集
功能权限取并集
可以为单个用户添加 n 个角色。当用户拥有多个角色时,该用户在系统内拥有的实际权限是各角色包含权限的并集。此调整可以通过角色的租户来实现更高效灵活的授权。示例如下:
- 存在多个角色
角色 | 页面权限 | 对象权限 |
角色A | 有「订单管理」页面权限 | 有组件「订单列表」中对象权限 |
角色B | 无 | 有组件「商品列表」中对象权限 |
- 当角色 A、角色 B 同时授予同一用户
权限版本 | 授权效果 |
旧版权限 | 用户可在「订单管理」页面中查看「订单列表」 |
新版权限 | 用户可在「订单管理」页面中查看「订单列表」和「商品列表」 |
记录权限取并集
记录权限直接授予用户,当用户命中多条记录规则时,该用户在系统内任何页面、流程中均有多条规则中全部记录的权限。示例如下:
- 存在两个角色,其角色成员各自被授予了记录权限规则
- 当角色A、角色B同时授予同一用户
权限版本 | 授权效果 |
旧版权限 | 用户可在「订单管理」页面中查看本人跟进的订单 |
新版权限 | 用户可在「订单管理」页面中查看本人或下属跟进的订单 |
- 流程和函数执行能以用户身份鉴权
流程和函数在执行时都能以用户身份鉴别数据模型、记录和字段权限,以满足开发者严格管控用户权限的诉求。
流程支持以发起人身份鉴权:
- 流程执行时支持两种鉴权身份「用户身份」和「应用身份」,默认将以「用户身份」执行流程:
- 应用身份:以应用内最大权限执行,即与旧版权限的鉴权方式保持一致
- 用户身份:流程执行中的数据操作均以流程发起人身份鉴权,当用户没有所需数据操作权限时将导致流程执行失败,示例如下:
- 存在两种角色
权限配置 | 流程发起权限 | 对象权限 |
角色A | 有「编辑订单」流程权限 | 有订单对象的查看权限、编辑权限 |
角色B | 有「编辑订单」流程权限 | 有订单对象的查看权限,无编辑权限 |
- 新旧版本鉴权效果
- 设置方式:打开流程编辑页面,点击「设置」在「流程执行鉴权方式」选项中进行设置
250px|700px|reset
函数支持以传入用户身份鉴权:
- 开发者可使用Auth函数,选择鉴权身份「用户身份」和「应用身份」,未设置时函数将默认以「用户身份」执行函数:
- 应用身份:以应用内最大权限执行
- 用户身份:函数执行中的数据操作均以流程发起人身份鉴权,当用户没有所需数据操作权限时将导致函数执行失败
- 设置方式:
- Node.js(详见Node.js SDK )
// 通过Auth函数选择「用户身份」鉴权
context.db.object(objectApiName).useUserAuth().findOne()
// 通过Auth函数选择「应用身份」鉴权
context.db.object(objectApiName).useSystemAuth().findOne()
// 未选择鉴权身份时,默认采用用户身份查询数据
context.db.object(objectApiName).findOne()
- 角色信息可用于「页面组件显隐」和「流程发起条件」
新版权限支持在「组件显隐规则」和「流程发起条件」中消费用户角色信息,从而实现对流程发起、组件显隐的精细化控制。
「用户.角色」可用于「组件显隐规则」:
可实现「当用户属于指定角色时,才能看到对应组件」的效果。如下图所示,当用户为「销售主管」角色时,才可见数据表格。
250px|700px|reset
「用户.角色」可用于「流程发起条件」:
可实现「当用户属于指定角色时,才能发起对应流程」的效果。如下图所示,当用户为「销售主管」角色时,才可发起「编辑销售分组信息」的流程。
250px|700px|reset
(二)注意事项
- 记录权限配置方式变化,会导致配置成本有一定上升
现状说明
相对于旧版权限,新版权限对于记录权限配置进行了较大调整。涉及以下2个方面:
- 被拆分成原子化的配置方式:旧版权限给一个角色设置记录授权只用在一个表单中配置一遍,新版权限进行同一操作时需要打开n(n为数据模型的数量)个表单配置n遍
250px|700px|reset
- 配置项更多:
- 需要手动配置规则名称
- 记录权限需要独立于角色设置「用户生效范围」(将记录权限授予谁)
- 记录权限支持独立于角色设置「操作权限」
250px|700px|reset
解决办法
- 开发者配置记录权限的时候可以站在记录权限复用的角度进行配置,如「销售主管」与「普通销售」可以复用同一条记录权限规则「所有销售可以编辑本人及下属的商机信息」,从而一定程度上降低配置成本
250px|700px|reset
- 敬请期待,即将 提供以下两类能力以降低记录权限的配置成本:
- 支持批量新增、编辑记录权限规则
- 开发记录权限配置的API,支持在OpenAPI中调用,从而以代码的方式实现批量配置
- 流程默认以用户身份执行,数据模型权限配置成本上升
现状说明
流程和函数在执行时都能以用户身份鉴别数据模型、记录和字段权限,以满足开发者严格管控用户权限的诉求。因此当选择「用户身份」执行时,需要同时开启对应流程和函数中涉及的「数据模型权限」、「字段权限」和「记录权限」。
解决办法
针对这个特性我们提供了两种方式来降低配置成本:
- 配置流程时会推荐开启流程中涉及的数据模型、字段权限,并提供一键开启的功能,降低开发者配置成本
250px|700px|reset
- 对于部分简单应用,开发者没有细粒度管理流程执行权限的诉求,可以在流程的设置中将应用切换至「应用身份鉴权」,则无需以用户身份鉴别流程中涉及的数据模型、对象和记录权限,因此也无需给用户配置对应的权限
250px|700px|reset
- 功能和记录权限分别取并集,用户被授予多角色时效果与旧版不同
场景1:组件显隐效果变化
- 实际存在多个角色
角色 | 页面权限 | 对象权限 |
角色A | 有「订单管理」页面权限 | 有组件「订单列表」中对象权限 |
角色B | 无 | 有组件「商品列表」中对象权限 |
- 当角色 A、角色 B 同时授予同一用户
场景2:组件内记录范围变化
- 实际存在多个角色
- 当角色A、角色B同时授予同一用户
场景3:流程发起权限变化
- 实际存在多个角色
- 当角色A、角色B同时授予同一用户
(三)常见问题
Q:已经配置了角色和授权,在测试/访问时,显示“暂无权限查看此组件”,是什么原因?
A:这是因为用户所在的角色,没有记录的权限。可以确认下:是否是「记录权限」没配置到角色身上。
250px|700px|reset

附一:各功能帮助文档
点击下面文字,即可跳转到对应帮助文档
附二:新版功能的培训课程
点击下面文字,即可跳转到对应课程
附三:应用搭建常见问题自查