IP Library Granted Patent US 12,429,995
Granted Patent B2
US 12,429,995 · App. 18/121,520 · Granted Sep 30, 2025

Collaborative widget state synchronization

Inventors: Bersabel Tadesse (San Francisco, CA); Sawyer Hood (San Francisco, CA); Yi Tang Jackie Chui (San Francisco, CA); Michael Yong (San Francisco, CA)
Assignee: Figma, Inc.
G06F3/04812
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,429,995
App. No.
18/121,520
Granted
Sep 30, 2025
Kind
B2
Abstract

A computing system receives position data from each of a plurality of user computing devices, the position data indicating a cursor position on a collaborative user interface for each collaborator during a collaborative session. The system determines, based on the position data, whether the cursor position of a respective collaborator is within a bounding area of a widget presented on the collaborative user interface. When the cursor position of the respective collaborator is within the bounding area of the widget, the system transmits feedback response data to each of the plurality of user computing devices to cause a corresponding feedback response for the widget to be presented on the collaborative user interface displayed on each of the plurality of user computing devices.

Claims (41)

1. A network computing system comprising:

one or more processors; and

a memory storing instructions that, when executed by the one or more processors, cause the network computing system to:

receive, from a plurality of user computing devices via one or more networks, position data from one or more of the plurality of user computing devices participating in a collaborative in a collaborative design session in an application hosting a collaborative user interface in which a design is under edit, the collaborative user interface including one or more widgets having one or more interactive objects for which interaction triggers execution of widget programming logic that modifies the collaborative user interface, the position data indicating a respective cursor position in the collaborative user interface for each respective collaborator during participating in the collaborative design session;

determine, based on the position data, that the cursor positions of one or more collaborators of the plurality of collaborators are within a bounding area of a layered widget presented in the collaborative user interface, wherein the layered widget comprises a first widget layered over a second widget, the first widget being associated with a first feedback response triggered when one of a plurality of cursors is within a bounding area of the first widget and the second widget being associated with a second feedback response triggered when one of the plurality of cursors is within a bounding area of the second widget; and

based on the determining:

determine a layered feedback response for the layered widget based on the cursor positions of the plurality of the collaborators within the bounding area of the layered widget, the layered feedback response comprising at least the first feedback response and the second feedback response being executed simultaneously, and

transmit feedback response data to each of the plurality of user computing devices to cause the layered feedback response for the layered widget to be presented on the collaborative user interface displayed in each of the plurality of user computing devices.

2. The network computing system of claim 1 , wherein the executed instructions further cause the network computing system to:

receive, over the one or more networks, input data from one or more of the plurality of user computing devices, the input data indicating user inputs performed on a widget of the one or more widgets;

based on the input data, determine respective feedback responses for the user inputs performed on the widget; and

transmit, over the one or more networks, second feedback response data to the plurality of user computing devices, the second feedback response data causing each of the plurality of user computing devices to present corresponding feedback responses for the user inputs on the widget.

3. The network computing system of claim 2 , wherein the corresponding feedback responses based on the user inputs on the widget are determined by performing a lookup in widget programming logic of the second widget.

4. The network computing system of claim 2 , wherein the corresponding feedback responses based on the user inputs comprise at least one of fill responses or stroke responses.

5. The network computing system of claim 1 , wherein the cursor positions of the plurality of the collaborators within the bounding area of the layered widget comprise hover-over actions on the layered widget.

6. The network computing system of claim 1 , wherein the layered feedback response for the layered widget comprises at least one fill response and at least one stroke response.

7. The network computing system of claim 1 , wherein the layered feedback response is determined by widget programming logic of the layered widget.

8. A non-transitory computer-readable medium that stores instructions, which when executed by one or more processors of a computing system, cause the computing system to perform operations comprising:

receiving, from a plurality of user computing devices via one or more networks, position data from one or more of a the plurality of user computing devices participating in a collaborative design session in an application hosting a collaborative user interface in which a design is under edit, the collaborative user interface including one or more widgets having one or more interactive objects for which interaction triggers execution of widget programming logic that modifies the collaborative user interface, the position data indicating a respective cursor position on in the collaborative user interface for each respective collaborator participating in the collaborative design session;

determining, based on the position data, that the cursor positions of a one or more collaborators of the plurality of the collaborators are within a bounding area of a layered widget presented in the collaborative user interface, wherein the layered widget comprises a first widget layered over a second widget, the first widget being associated with a first feedback response triggered when one of a plurality of cursors is within a bounding area of the first widget and the second widget being associated with a second feedback response triggered when one of the plurality of cursors is within a bounding area of the second widget; and

based on the determining:

determining a layered feedback response for the layered widget based on the cursor positions of the plurality of the collaborators within the bounding area of the layered widget, the layered feedback response comprising at least the first feedback response and the second feedback response simultaneously, and

transmitting feedback response data to each of the plurality of user computing devices to cause the layered feedback response for the layered widget to be presented on in the collaborative user interface displayed on each of the plurality of user computing devices.

9. The non-transitory computer-readable medium of claim 8 , wherein the operations further comprise:

receiving, over the one or more networks, input data from one or more of the plurality of user computing devices, the input data indicating user inputs performed on a widget of the one or more widgets;

based on the input data, determining respective feedback responses for the user inputs performed on the widget; and

transmitting, over the one or more networks, second feedback response data to the plurality of user computing devices, the second feedback response data causing each of the plurality of user computing devices to present corresponding feedback responses for the user inputs on the widget.

10. The non-transitory computer-readable medium of claim 9 , wherein the corresponding feedback responses based on the user inputs on the widget are determined by performing a lookup in widget programming logic of the widget.

11. The non-transitory computer-readable medium of claim 9 , wherein the corresponding feedback responses based on the user inputs comprise at least one of fill responses or stroke responses.

12. The non-transitory computer-readable medium of claim 8 , wherein the cursor positions of the plurality of the collaborators within the bounding area of the layered widget comprises hover-over actions on the layered widget.

13. The non-transitory computer-readable medium of claim 8 , wherein the layered feedback response for the layered widget comprises at least one fill response and at least one stroke response.

14. The non-transitory computer-readable medium of claim 8 , wherein the layered feedback response is determined by widget programming logic of the layered widget.

15. A computer-implemented method comprising:

receiving, from a plurality of user computing devices via one or more networks, position data from one or more of the plurality of user computing devices participating in a collaborative design session in an application hosting a collaborative user interface in which a design is under edit, the collaborative user interface including one or more widgets having one or more interactive objects for which interaction triggers execution of widget programming logic that modifies the collaborative user interface, the position data indicating a respective cursor position in the collaborative user interface for each respective collaborator participating in the collaborative design session;

determining, based on the position data, that the cursor positions of one or more collaborators of the plurality of the collaborators are within a bounding area of a layered widget presented in the collaborative user interface, wherein the layered widget comprises a first widget layered over a second widget, the first widget being associated with a first feedback response triggered when one of a plurality of cursors is within a bounding area of the first widget and the second widget being associated with a second feedback response when one of the plurality of cursors is within a bounding area of the second widget; and

based on the determining:

determining a layered feedback response for the layered widget based on the cursor positions of the plurality of the collaborators within the bounding area of the layered widget, the layered feedback response comprising at least the first feedback response and the second feedback response simultaneously, and

transmitting feedback response data to each of the plurality of user computing devices to cause the layered feedback response for the layered widget to be presented in the collaborative user interface displayed on each of the plurality of user computing devices.

16. The method of claim 15 , wherein the cursor positions of the plurality of the collaborators within the bounding area of the layered widget comprise hover-over actions on the layered widget.

17. The method of claim 15 , wherein the layered feedback response for the layered widget comprises at least one fill response and/or at least one stroke response.

18. The method of claim 15 , wherein the layered feedback response is determined by widget programming logic of the layered widget.

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 3, 2023
From: TADESSE, BERSABEL; CHUI, YI TANG JACKIE; YONG, MICHAEL; HOOD, SAWYER
To: FIGMA, INC.
Reel/Frame 065447/0839 →
Continuity (2)
Provisional Application 63320634 · Mar 16, 2022
Related Publication 20230297208A1 · Sep 21, 2023
References Cited (101)
US 5339389A · Bates · 1994 [cited by examiner]
US 6088709A · Watanabe · 2000 [cited by applicant]
US 7770122B1 · Shaik · 2010 [cited by examiner]
US 8533580B1 · Xu · 2013 [cited by applicant]
US 9424545B1 · Lee · 2016 [cited by examiner]
US 9430229B1 · Zijst · 2016 [cited by applicant]
US 9477649B1 · Davidson · 2016 [cited by applicant]
US 10129188B2 · Liu · 2018 [cited by applicant]
US 10606576B1 · Tung · 2020 [cited by applicant]
US 10620921B2 · Brebner · 2020 [cited by applicant]
US 11010542B2 · Nelson · 2021 [cited by applicant]
US 11138518B1 · Yu · 2021 [cited by applicant]
US 20040054627A1 · Rutledge · 2004 [cited by applicant]
US 20070118794A1 · Hollander · 2007 [cited by applicant]
US 20080040426A1 · Synstelien · 2008 [cited by applicant]
US 20090300475A1 · Fink · 2009 [cited by examiner]
US 20100037149A1 · Heath · 2010 [cited by applicant]
US 20100192107A1 · Takahashi · 2010 [cited by applicant]
US 20100306181A1 · Little · 2010 [cited by applicant]
US 20110047532A1 · Wang · 2011 [cited by applicant]
US 20110113350A1 · Carlos · 2011 [cited by applicant]
US 20110268262A1 · Jones · 2011 [cited by applicant]
US 20120247967A1 · James · 2012 [cited by applicant]
US 20130013089A1 · Kawakami · 2013 [cited by applicant]
US 20130014023A1 · Lee · 2013 [cited by applicant]
US 20130031208A1 · Linton · 2013 [cited by applicant]
US 20130097476A1 · Koroda · 2013 [cited by applicant]
US 20130111338A1 · Huo · 2013 [cited by applicant]
US 20130117714A1 · Rhee · 2013 [cited by examiner]
US 20130124967A1 · Hatfield · 2013 [cited by applicant]
US 20140108963A1 · Black · 2014 [cited by applicant]
US 20140258968A1 · Brown · 2014 [cited by applicant]
US 20140298153A1 · Tsujimoto · 2014 [cited by applicant]
US 20140310660A1 · Rosen · 2014 [cited by applicant]
US 20150032366A1 · Man · 2015 [cited by applicant]
US 20150127753A1 · Tew · 2015 [cited by applicant]
US 20150302338A1 · Zaveri · 2015 [cited by applicant]
US 20160110063A1 · Connolly · 2016 [cited by applicant]
US 20160232785A1 · Wang · 2016 [cited by applicant]
US 20160321449A1 · Surti · 2016 [cited by applicant]
US 20160343156A1 · Yoshizawa · 2016 [cited by applicant]
US 20160358467A1 · Jeong · 2016 [cited by applicant]
US 20170109139A1 · Bitner · 2017 [cited by applicant]
US 20170192656A1 · Pedrick · 2017 [cited by examiner]
US 20170262294A1 · Yakan · 2017 [cited by applicant]
US 20170293544A1 · Katayama · 2017 [cited by applicant]
US 20170339370A1 · Inoue · 2017 [cited by applicant]
US 20180121039A1 · Bliss · 2018 [cited by applicant]
US 20180173701A1 · Kim · 2018 [cited by applicant]
US 20180174446A1 · Wang · 2018 [cited by applicant]
US 20180181299A1 · Ouellette et al. · 2018 [cited by applicant]
US 20180285084A1 · Mimlitch, III · 2018 [cited by applicant]
US 20180315248A1 · Bastov · 2018 [cited by applicant]
US 20180337880A1 · Sokolov · 2018 [cited by applicant]
US 20180350144A1 · Rathod · 2018 [cited by applicant]
US 20190129927A1 · Okamoto · 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 20190303880A1 · Hashimoto · 2019 [cited by applicant]
US 20190361580A1 · Dowling · 2019 [cited by examiner]
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 20210367986A1 · Davuluri et al. · 2021 [cited by applicant]
US 20220108276A1 · Stringham · 2022 [cited by applicant]
US 20220129118A1 · Hsu · 2022 [cited by applicant]
US 20220191594A1 · Devoy, III · 2022 [cited by applicant]
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]
EP 0576178 · 1993 [cited by applicant]
EP 2775397A2 · 2014 [cited by applicant]
EP 3293619 · 2018 [cited by applicant]
EP 3633472A1 · 2020 [cited by applicant]
WO WO2009132444A1 · 2009 [cited by applicant]
WO WO2019209391A1 · 2019 [cited by applicant]
WO WO2021097141 · 2021 [cited by applicant]
WO WO2021159079 · 2021 [cited by applicant]
WO WO2022061027 · 2022 [cited by applicant]
WO WO2022109200 · 2022 [cited by applicant]
ComputerLanguage.com (CLC), widget Definition (Year: 2021). [cited by examiner]
International Search Report and The Written Opinion of The International Searching Authority mailed Jul. 25, 2022, for related PCT/US2022/025840 filed Apr. 20, 2022, 17 pages. [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 Mar. 1, 2023 for related PCT/US2022/050134 filed Nov. 16, 2022, 10 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]
Anonymous: “HTML editor—Wikipedia”. Apr. 13, 2022 pp. 1-4. [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]
Written Opinion dated Apr. 10, 2024 in PCT/US2023/020890. [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: “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 Dec. 12, 2022, for related PCT/US2022/041418 filed Aug. 24, 2022, 11 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 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]
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]
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]