IP Library Granted Patent US 12,474,893
Granted Patent B2
US 12,474,893 · App. 17/894,961 · Granted Nov 18, 2025

Integrated application platform to implement widgets

Inventors: Bersabel Tadesse (San Francisco, CA); Jonas Sicking (San Francisco, CA); Michael Yong (San Francisco, CA); Sawyer Hood (San Francisco, CA); Yi Tang Jackie Chui (San Francisco, CA); Rohit Chouhan (San Francisco, CA)
Assignee: Figma, Inc.
G06F8/34G06F8/38
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,474,893
App. No.
17/894,961
Granted
Nov 18, 2025
Kind
B2
Abstract

An integrated application platform enables users to select and implement widgets, in order to insert widget objects with rendered content. The widget objects are persistent content elements that are dynamically responsive to user input. Further, the widget objects are associated with functionality that extends or supplements the functionality provided by the integrated application platform.

Claims (36)

1 . A network computer system comprising:

a memory sub-system storing a first set of instructions;

one or more processors that operate to communicate instructions of the first set of instructions to a plurality of user computing devices, wherein the set of instructions include instructions that when executed by each user computing device of the plurality of user computing devices, causes each user computing device of the plurality of user computing devices to perform operations for implementing an integrated application platform to enable a corresponding user of that user computing device to collaborate on content rendered on a shared canvas;

wherein for each user computing device of the plurality of user computing devices, implementing the integrated application platform includes:

retrieving widget programming logic;

executing the widget programming logic to (i) render a widget object as a persistent content element of the content rendered on the shared canvas; (ii) provide a widget data structure that identifies a state of the widget object; and (iii) in response to input from one of the users of the plurality of user computing devices that is directed to the widget object, change the state of the widget object and update rendering of the widget object on the shared canvas based on the changed state.

2 . The network computer system of claim 1 , wherein executing the widget programming logic includes (i) rendering the widget object to include a set of attributes that can be changed by input from one or more of the users of the plurality of user computing devices, and (ii) providing an interactive element with the widget object, the interactive element receiving input directed to changing the state of the widget object.

3 . The network computer system of claim 1 , wherein the widget programming logic is retrieved from the network computer system.

4 . The network computer system of claim 1 , wherein the widget programming logic is retrieved from a local cache.

5 . The network computer system of claim 1 , wherein the memory sub-system includes a second set of instructions, the second set of instructions being executable by one or more processors of the network computer system to perform operations that include:

receiving data from one of the plurality of user computing devices, the data indicating input to change the state of the widget object; and

in response to receiving the data, performing a synchronization operation to cause at least one user computing device of the plurality of user computing devices to change the state of that widget object on that user computing device.

6 . The network computer system of claim 5 , wherein the operations further comprise:

receiving input directed to changing the state of the widget object, and in response to receiving the input, sending data reflecting the changed state to the network computer system.

7 . A method for operating a user computing device, the method comprising:

implementing an integrated application platform to enable a corresponding user to collaborate, as part of a group of users operating a plurality of user computing devices, on content rendered on a shared canvas;

retrieving widget programming logic;

executing the widget programming logic to (i) render a widget object as a persistent content element of the content rendered on the shared canvas; (provide a widget data structure that identifies a state of a widget object; and (iii) in response to input directed to the widget object from one of the plurality of user computing devices, change the state of the widget object and update rendering of the widget object on the shared canvas based on the changed state.

8 . The method of claim 7 , wherein the widget data structure identifies functions that are associated with inputs directed to the widget object.

9 . The method of claim 7 , wherein the method further comprises: triggering each user computing device of the plurality of user computing devices to synchronize the widget data structure.

10 . The method of claim 7 , wherein executing the widget programming logic includes (i) rendering the widget object to include a set of attributes that can be changed by input from the one or more user computing devices, and (ii) providing an interactive element with the widget object, the interactive element receiving input directed to changing the state of the widget object.

11 . A non-transitory computer-readable medium that stores instructions, which when executed by one or more processors of a first user computing device, cause the first user computing device to perform operations that include:

implementing an integrated application platform to enable a corresponding user to collaborate, as part of a group of users operating a plurality of user computing devices, on content rendered on a shared canvas;

retrieving widget programming logic;

executing the widget programming logic to (i) render a widget object as a persistent content element of the content rendered on the shared canvas; (ii) provide a widget data structure that identifies a state of a widget object; and (iii) in response to input directed to the widget object from one of the plurality of user computing devices, change the state of the widget object and update rendering of the widget object on the shared canvas based on the changed state.

12 . The non-transitory computer-readable medium of claim 11 , wherein the widget data structure identifies functions that are associated with inputs directed to the widget object.

13 . The non-transitory computer-readable medium of claim 12 , wherein the operations include: in response to receiving the input directed to the widget object, updating the widget data structure based on the functions identified in the widget data structure.

14 . The non-transitory computer-readable medium of claim 11 , wherein executing the widget programming logic includes (i) rendering the widget object to include a set of attributes that can be changed by input from one of the plurality of user computing devices, and (ii) providing an interactive element with the widget object, the interactive element receiving input directed to changing the state of the widget object.

15 . The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise synchronizing the widget data structure amongst one or more of the plurality of user computing devices.

16 . The non-transitory computer-readable medium of claim 11 , wherein the widget programming logic is retrieved from a network computer system.

17 . The non-transitory computer-readable medium of claim 11 , wherein the widget programming logic is retrieved from a local cache.

18 . The non-transitory computer-readable medium of 11 , wherein the operations include:

receiving data indicating input to change the state of the widget object based on input received from one of the plurality of user computing devices; and

in response to receiving the data, changing the state of the widget object based on the received data.

19 . The non-transitory computer-readable medium of 11 , wherein the operations further comprise:

receiving input directed to changing the state of the widget object, and in response to receiving the input, sending data reflecting the changed state to a network computer system.

Assignments (2)
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 27, 2025
From: FIGMA, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 071775/0349 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 8, 2022
From: TADESSE, BERSABEL; SICKING, JONAS; YONG, MICHAEL; HOOD, SAWYER; CHUI, YI TANG JACKIE; CHOUHAN, ROHIT
To: FIGMA, INC.
Reel/Frame 061698/0001 →
Continuity (2)
Provisional Application 63236645 · Aug 24, 2021
Related Publication 20230068410A1 · Mar 2, 2023
References Cited (61)
US 5339389A · Bates · 1994 [cited by applicant]
US 7770122B1 · Shaik · 2010 [cited by applicant]
US 9424545B1 · Lee · 2016 [cited by applicant]
US 9430229B1 · Zijst · 2016 [cited by applicant]
US 10606576B1 · Tung · 2020 [cited by applicant]
US 10620921B2 · Brebner · 2020 [cited by applicant]
US 11138518B1 · Yu · 2021 [cited by examiner]
US 12107816B2 · Leigh · 2024 [cited by examiner]
US 20080040426A1 · Synstelien · 2008 [cited by applicant]
US 20080082691A1 · Hochwarth · 2008 [cited by examiner]
US 20100192107A1 · Takahashi · 2010 [cited by applicant]
US 20100306181A1 · Little · 2010 [cited by examiner]
US 20110113350A1 · Carlos · 2011 [cited by examiner]
US 20110268262A1 · Jones · 2011 [cited by applicant]
US 20130111338A1 · Huo · 2013 [cited by applicant]
US 20140310660A1 · Rosen · 2014 [cited by applicant]
US 20150127753A1 · Tew · 2015 [cited by applicant]
US 20160321449A1 · Surti · 2016 [cited by applicant]
US 20170052767A1 · Bennett · 2017 [cited by applicant]
US 20170109139A1 · Bitner · 2017 [cited by applicant]
US 20170192656A1 · Pedrick · 2017 [cited by applicant]
US 20170262294A1 · Yakan · 2017 [cited by applicant]
US 20170339370A1 · Inoue · 2017 [cited by applicant]
US 20180088915A1 · Yang et al. · 2018 [cited by applicant]
US 20180181299A1 · Ouellette et al. · 2018 [cited by applicant]
US 20180285084A1 · Mimlitch, III · 2018 [cited by applicant]
US 20190065440A1 · Lu et al. · 2019 [cited by applicant]
US 20190146811A1 · Pell · 2019 [cited by applicant]
US 20190179501A1 · Seeley · 2019 [cited by applicant]
US 20190236975A1 · Chong · 2019 [cited by applicant]
US 20190238602A1 · Lo · 2019 [cited by applicant]
US 20190300475A1 · Li et al. · 2019 [cited by applicant]
US 20190303880A1 · Hashimoto · 2019 [cited by applicant]
US 20190361580A1 · Dowling et al. · 2019 [cited by applicant]
US 20200042648A1 · Rao · 2020 [cited by applicant]
US 20200050431A1 · Zilouchian Moghaddam · 2020 [cited by applicant]
US 20200296147A1 · Eliason · 2020 [cited by applicant]
US 20210208775A1 · Allington · 2021 [cited by applicant]
US 20210247967A1 · Wichary et al. · 2021 [cited by applicant]
US 20210367986A1 · Davuluri et al. · 2021 [cited by applicant]
US 20220108276A1 · Stringham · 2022 [cited by applicant]
US 20220129118A1 · Hsu · 2022 [cited by examiner]
US 20220263675A1 · Cupala · 2022 [cited by applicant]
US 20220334704A1 · Lin · 2022 [cited by applicant]
US 20220334806A1 · Lin · 2022 [cited by applicant]
US 20220342644A1 · Fuetsch · 2022 [cited by applicant]
Paper by WeTransfer—Simple Sketch App, “Creativity at your fingertips” URL:https://web.archive.org/web/20220121205009/https://wetransfer.com/paper, 9 pages. [cited by applicant]
International Search Report and the Written Opinion of the International Searching Authority mailed Nov. 28, 2022, for related PCT/US2022/040461 filed Aug. 16, 2022, 14 pages. [cited by applicant]
International Search Report and the Written Opinion of the International Searching Authority mailed Dec. 12, 2022, for related PCT/US2022/041418 filed Aug. 24, 2022, 11 pages. [cited by applicant]
“Zack Qattan, “Collaborative Cursor Chat w/Croquet”, Nov. 30, 2020, youtube.com, https://www.youtube.com/watch?v=NiqTCROdlgw, pp. 1-15 (Year: 2020)”. [cited by applicant]
Anonymous: “HTML editor—Wikipedia”. Apr. 13, 2022 pp. 1-4. [cited by applicant]
Anonymous: “Change cursor into custom text”, Dec. 24, 2018 (Dec. 24, 2018), XP055930588, Retrieved from the Internet: URL: https://stackoverflow.com/questions/53916492/change-cursor-into-custome-text [retrieved on Jun. … [cited by applicant]
International Search Report and the Written Opinion of the International Searching Authority mailed Feb. 1, 2023, for related PCT/US2022/047191 filed Oct. 19, 2022, 16 pages. [cited by applicant]
International Search Report and the Written Opinion of the International Searching Authority mailed Jul. 1, 2022, for related PCT/US2022/025626, filed Apr. 20, 2022, 17 pages. [cited by applicant]
International Search Report and Written Opinion mailed Jun. 27, 2023 in PCT/US2023/015322. [cited by applicant]
International Search Report dated Aug. 18, 2023 in PCT/US2023/020890. [cited by applicant]
IPRP dated Jul. 3, 2024 in PCT/US2023/020890. [cited by applicant]
IPRP mailed May 2, 2024 for related PCT/US2022/047191 filed Oct. 19, 2022, 12 pages. [cited by applicant]
Philippe Charles et al.: “Accelerating the creation of customized, language-specific IDEs in Eclipse”, ACM SIGPLAN Notices, Association for Computing Machinery, US, vol. 44, No. 10, Oct. 25, 2009 (Oct. 25, 2009), pp. 19… [cited by applicant]
Wallace Evan: “Multiplayer Editing in Figma”, figma.com/blog, Sep. 28, 2016 (Sep. 28, 2016), XP055930547, Retrieved from the Internet: URL: https://www.figma.com/blog/multiplayer-editing-in-figma/ [retrieved on Jun. 13,… [cited by applicant]
Written Opinion dated Apr. 10, 2024 in PCT/US2023/020890. [cited by applicant]