Plugins›OYA Download, Copy & Device Info

OYA Download, Copy & Device Info

Download files, copy to clipboard, detect phone, tablet or desktop, and set or clean URL parameters without a reload.

Version 1.0.0Free · MITWebNo keys or accounts

Getting started#

  1. In the Bubble editor, open Plugins, choose Add plugins and search for “OYA Download, Copy & Device Info”. Install it.
  2. For the device information and the events, place one OYA Browser element on the page. It is invisible and any size will do. The six actions work without it.
  3. Add the actions to your workflows, for example: When Button Export is clicked → OYA Browser — Download text as a file, with Content set to your CSV text and File name to export.csv.
  4. Use the element’s states in conditions and text, for example: OYA Browser A’s is a phone is yes.

The element: OYA Browser#

An invisible element. Place one on a page to read the visitor's device, browser, operating system, screen and settings as states, and to hear when an OYA Browser action has copied or downloaded something (the events). The actions below work without it; it is only needed for the states and events.

SettingTypeNotes
Update the viewport size when the window is resizedyes / noOff: the viewport states are read once, when the page loads. Required. Default: yes.

States#

Read them as OYA Browser A's … in any expression or condition.

StateTypeWhat it holds
device (phone, tablet or computer)textOne of phone, tablet, computer.
is a phoneyes / no
is a tabletyes / no
is a computeryes / no
browser nametextChrome, Safari, Firefox, Edge, Opera, Samsung Internet, or empty when not recognised.
browser versiontext
operating systemtextWindows, macOS, iOS, iPadOS, Android, ChromeOS, Linux, or empty.
operating system versiontext
operating system architecture (32 or 64)numberEmpty when the browser does not say.
operating system descriptiontextName, version and architecture in one line, e.g. "Windows 10 64-bit".
browser and system descriptiontexte.g. "Chrome 130.0 on Windows 10 64-bit".
has a touch screenyes / no
viewport width (px)number
viewport height (px)number
preferred languagetextA language tag such as en-AU.
time zonetextAn IANA zone such as Australia/Sydney.
URL parameters (the text after ?)text
last copied texttext
last downloaded file nametext
last copy or download errortext

Events#

Start a workflow with When OYA Browser A ….

EventWhen it fires
text copiedWhen the matching action finishes.
copy failedWhen the matching action finishes.
file downloadedWhen the matching action finishes.
download failedWhen the matching action finishes.
URL parameters changedWhen the matching action finishes.
i

Read the device again (an element action): Re-reads every state now (normally they update by themselves).

Actions#

All six run in the visitor’s browser (client side). Find them under Plugins in the workflow editor.

Download file from URL#

Saves the file at a URL to the visitor's device under the name given. Files uploaded to your app download directly; a file on another site that does not allow it is opened in a new tab instead.

FieldTypeNotes
File URLtextRequired.
Save as (file name)textEmpty: the name at the end of the URL. Optional.

Download text as a file#

Saves text your app builds (plain text, CSV, JSON, HTML…) as a file on the visitor's device.

FieldTypeNotes
ContenttextRequired.
File nametextRequired. Default: download.txt.
File type (MIME)textEmpty: chosen from the file name's extension (.csv is text/csv, .json is application/json, otherwise text/plain). Optional.
Add a byte-order mark (helps Excel read accented CSV)yes / noOptional. Default: no.

Copy to clipboard#

Copies text to the visitor's clipboard. Run it from a click: browsers only allow copying in answer to the visitor's own action.

FieldTypeNotes
Text to copytextRequired.

Set URL parameter#

Sets one parameter in the page's address without reloading the page. An empty value removes the parameter.

FieldTypeNotes
Parameter nametextRequired.
ValuetextOptional.
Add to the browser's history (Back returns to the old address)yes / noOptional. Default: no.

Remove URL parameters#

Removes the named parameters from the page's address without reloading the page.

FieldTypeNotes
Parameter names (comma-separated)textRequired.

Clean URL parameters#

Tidies the page's address without reloading: removes empty parameters, and, when a list is given, every parameter not on it.

FieldTypeNotes
Keep only these parameters (comma-separated; empty keeps all)textOptional.
Remove parameters with no valueyes / noRequired. Default: yes.

Good to know#

!

Copying and downloading must start from a click. Browsers only allow them in answer to the visitor’s own action, so a copy run from “Page is loaded” fails, and the copy failed event says so.

i

A file on another site that does not allow direct downloads opens in a new tab instead of saving. Files uploaded to your own app always download directly.

i

Set URL parameter changes the page’s address in place: no “Go to page” back to the current page, no reload. Its Parameter name can be dynamic as well as its value, so one action can serve a whole row of filters. (Bubble’s own “Get data from page URL” still reads by a fixed name; the element’s URL parameters state gives you all of them.)

i

The states update by themselves: the viewport on resize, the URL parameters whenever these actions change them. “Read the device again” re-reads everything at once, for changes the element cannot see, such as another script changing the address.

i

Nothing is sent anywhere. Everything is read and done in the visitor’s browser, with no keys and no accounts.

How it is tested#

Before every release the plugin passes its checklist inside a Bubble app. The latest run, 25 October 2026:

✓

Inside a Bubble app: 31 of 31 checklist steps, with the plugin installed on a test app that holds no data.

✓

In a test page, in a real browser: 52 of 52 checklist steps and 64 of 64 deeper checks, on a desktop screen and an emulated iPhone.

✓

Unit tests: 30 unit tests on the shared code and 2 on the plugin code, run on every change.

Licence and support#

Free and open source under the MIT licence: the code may be read, copied and changed. Version 1.0.0, released 9 November 2026.

To report a problem or ask a question, email support@ownyourapp.io. Please say which plugin and version, and what you expected to happen.