IP Library › Granted Patent US 12,638,965
Granted Patent B2
US 12,638,965 · App. 19/006,913 · Granted May 26, 2026

Techniques for replaying a mobile application session

Inventors: Connor Blanck (Somerville, MA); James Logsdon (Medford, MA); Pascal Kriete (Malden, MA)
Assignee: LogRocket, Inc.
G06F3/04845G06F3/0488G06F9/451
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,638,965
App. No.
19/006,913
Granted
May 26, 2026
Kind
B2
Abstract

Described herein are techniques for replaying a session of an application executed by a device (e.g., a mobile device). The session may be a session in which a user was interacting with the application. The techniques replay a session by replicating a sequence of visualizations that were rendered in an application GUI by the device in a replay GUI displayed on another device. The techniques replicate visualizations by: (1) accessing data associated with the visualizations from the device executing the application; and (2) replicating the visualizations in the replay GUI to provide a replay. A user of the other device viewing the replay GUI will see a replay of the visualizations rendered in the application GUI in the session.

Claims (66)

1 . A method of replaying a sequence of visualizations displayed in a graphical user interface (GUI) of an application executed by a first device on a second device, the method comprising:

using a processor to perform:

accessing data associated with the sequence of visualizations displayed in the application GUI by the first device; and

replicating, using the data associated with the sequence of visualizations, the sequence of visualizations on the second device to provide a replay of the sequence of visualizations displayed in the application GUI, the replicating comprising:

determining, using data associated with at least one visualization of the sequence of visualizations, a set of drawing operations that, when executed by the second device, causes the second device to replicate the at least one visualization in a replay GUI, wherein:

the set of drawing operations are determined based on a set of software constructs used by the second device; and

the set of software constructs may be different than a set of software constructs used by the first device to display the sequence of visualizations; and

transmitting, to the second device, the set of drawing operations for execution by the second device to replicate the sequence of visualizations.

2 . The method of claim 1 , wherein determining, using the data associated with the at least one visualization of the sequence of visualizations, the set of drawing operations that, when executed by the second device, causes the second device to replicate the at least one visualization in the replay GUI comprises:

identifying the set of drawing operations from among a plurality of operations provided by an application program object representing a screen of the first device.

3 . The method of claim 1 , wherein:

the sequence of visualizations is rendered in the application GUI by the first device using a first operating system; and

the determined set of drawing operations is executable without use of the first operating system.

4 . The method of claim 3 , wherein the first operating system is an iPhone Operating System (iOS).

5 . The method of claim 1 , wherein determining, using the data associated with the at least one visualization of the sequence of visualizations, the set of drawing operations that, when executed by the second device, causes the second device to replicate the at least one visualization in the replay GUI comprises:

determining, using the data associated with the at least one visualization, a change in a graphical element in the application GUI that occurred as part of the at least one visualization; and

determining the set of drawing operations to replicate, in the replay GUI, the change in the graphical element in the application GUI that occurred as part of the at least one visualization.

6 . The method of claim 5 , wherein:

the data associated with the at least one visualization comprises data obtained using a software object in code of the application, the software object representing the graphical element in the application GUI.

7 . The method of claim 6 , wherein the data obtained using the software object in the code of the application comprises data indicating a modification in one or more visual attributes of the graphical element represented by the software object.

8 . The method of claim 7 , wherein the software object is an instance of a software code class.

9 . The method of claim 8 , wherein the software code class is an iPhone Operating System (iOS) view class.

10 . The method of claim 1 , wherein:

the data associated with the sequence of visualizations comprises at least one image of a first one of the sequence of visualizations rendered in the application GUI; and

replicating the sequence of visualizations in the replay GUI comprises:

determining one or more operations that, when executed by the second device, cause the second device to place the at least one image in the replay GUI to replicate the first visualization in the replay GUI; and

transmitting, to the second device, the one or more operations.

11 . The method of claim 10 , wherein determining the one or more operations that, when executed by the second device, cause the second device to place the at least one image in the replay GUI to replicate the first visualization in the replay GUI comprises:

determining a location of the at least one image relative to a reference location in the application GUI; and

determining a location of the at least one image in the replay GUI based on the location of the at least one image relative to the reference location in the application GUI;

wherein the one or more operations, when executed by the second device, cause the second device to place the at least one image at the determined location in the replay GUI.

12 . The method of claim 1 , wherein data associated with a first one of the sequence of visualizations comprises a location in a screen of the first device at which the user touched the screen, and the method further comprises:

determining a location in the replay GUI corresponding to the location in the screen of the first device at which the user touched the screen;

wherein replicating the first visualization in the replay GUI comprises:

determining one or more operations that, when executed by the second device, cause the second device to render a visualization indicating a screen touch at a location in the replay GUI corresponding to the location in the screen of the first device at which the user touched the screen; and

transmitting, to the second device, the one or more operations for execution by the second device to replicate the visualization indicating the screen touch at the location in the replay GUI corresponding to the location in the screen of the first device at which the user touched the screen.

13 . The method of claim 1 , further comprising:

obtaining, from the first device during a session, the data associated with the sequence of visualizations; and

storing the data associated with the sequence of visualizations in a datastore.

14 . The method of claim 1 , further comprising providing, to the second device, the replay GUI, wherein the providing comprises:

displaying the replay GUI in a webpage of an Internet website accessed by the second device using an Internet browser application.

15 . A system for replaying a sequence of visualizations displayed in a graphical user interface (GUI) of an application executed by a first device on a second device, the system comprising:

a processor; and

a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the processor to:

access data associated with the sequence of visualizations displayed in the application GUI by the first device; and

replicate, using the data associated with the sequence of visualizations, the sequence of visualizations on the second device to provide a replay of the sequence of visualizations displayed in the application GUI, the replicating comprising:

determining, using data associated with at least one visualization of the sequence of visualizations, a set of drawing operations that, when executed by the second device, causes the second device to replicate the at least one visualization in a replay GUI, wherein:

the set of drawing operations are determined based on a set of software constructs used by the second device; and

the set of software constructs may be different than a set of software constructs used by the first device to display the sequence of visualizations; and

transmitting, to the second device, the set of drawing operations for execution by the second device to replicate the sequence of visualizations.

16 . The system of claim 15 , wherein:

the sequence of visualizations is rendered in the application GUI by the first device using a first operating system; and

the determined set of drawing operations is executable without use of the first operating system.

17 . The system of claim 15 , wherein determining, using the data associated with the at least one visualization, the set of drawing operations that, when executed by the second device, causes the second device to replicate the at least one visualization in the replay GUI comprises:

determining, using the data associated with the at least one visualization, a change in a graphical element in the application GUI that occurred as part of the at least one visualization; and

determining the set of drawing operations to replicate the change in the graphical element in the replay GUI.

18 . The system of claim 17 , wherein:

the data associated with the at least one visualization comprises data obtained using a software object in code of the application, the software object representing the graphical element in the application GUI.

19 . The system of claim 18 , wherein the data obtained using the software object in the code of the application comprises data indicating a modification in one or more visual attributes of the graphical element represented by the software object.

20 . A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform a method of replaying a sequence of visualizations displayed in a graphical user interface (GUI) of an application executed by a first device on a second device, the method comprising:

accessing data associated with the sequence of visualizations displayed in the application GUI by the first device; and

replicating, using the data associated with the sequence of visualizations, the sequence of visualizations on the second device to provide a replay of the sequence of visualizations displayed in the application GUI, the replicating comprising:

determining, using data associated with at least one visualization of the sequence of visualizations, a set of drawing operations that, when executed by the second device, causes the second device to replicate the at least one visualization in a replay GUI, wherein:

the set of drawing operations are determined based on a set of software constructs used by the second device; and

the set of software constructs may be different than a set of software constructs used by the first device to display the sequence of visualizations; and

transmitting, to the second device, the set of drawing operations for execution by the second device to replicate the sequence of visualizations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2025
From: BLANCK, CONNOR; LOGSDON, JAMES; KRIETE, PASCAL
To: LOGROCKET, INC.
Reel/Frame 070695/0696 →
Continuity (3)
Continuation 18320263 · May 19, 2023
Provisional Application 63443561 · Feb 6, 2023
Related Publication 20250224862A1 · Jul 10, 2025
References Cited (17)
US 9747191B1 · Marolia et al. · 2017 [cited by applicant]
US 9990110B1 · Lounibos et al. · 2018 [cited by applicant]
US 11966320B1 · Welter et al. · 2024 [cited by applicant]
US 12216892B2 · Blanck et al. · 2025 [cited by applicant]
US 12271286B2 · Welter et al. · 2025 [cited by applicant]
US 20070240055A1 · Ting et al. · 2007 [cited by applicant]
US 20110029665A1 · Wenig et al. · 2011 [cited by applicant]
US 20120317549A1 · Cunningham et al. · 2012 [cited by applicant]
US 20130066949A1 · Colrain et al. · 2013 [cited by applicant]
US 20220043879A1 · Trigalo et al. · 2022 [cited by applicant]
US 20230214240A1 · Parejo et al. · 2023 [cited by applicant]
US 20240264730A1 · Blanck et al. · 2024 [cited by applicant]
US 20240370349A1 · Welter et al. · 2024 [cited by applicant]
International Search Report and Written Opinion mailed Apr. 5, 2024 for International Application No. PCT/US2024/013930. [cited by applicant]
International Search Report and Written Opinion mailed Sep. 6, 2024 for International Application No. PCT/US2024/027043. [cited by applicant]
[No Author Listed], Developer Documentation. SKIA. https://skia.org/docs/dev [last accessed Sep. 14, 2023], 1 page. [cited by applicant]
[No Author Listed], User Documentation. SKIA. https://skia.org/docs/user/ [last accessed Sep. 14, 2023], 1 page. [cited by applicant]