# Table of Contents
- [sUNC Documentation](#sunc-documentation)
- [Contribution Guide - sUNC Documentation](#contribution-guide-sunc-documentation)
- [How do test results work? - sUNC Documentation](#how-do-test-results-work-sunc-documentation)
- [sUNC introduction - sUNC Documentation](#sunc-introduction-sunc-documentation)
- [sUNC Integration Suite - sUNC Documentation](#sunc-integration-suite-sunc-documentation)
- [Closures - sUNC Documentation](#closures-sunc-documentation)
- [postMessage - sUNC Documentation](#postmessage-sunc-documentation)
- [checkcaller - sUNC Documentation](#checkcaller-sunc-documentation)
- [clonefunction - sUNC Documentation](#clonefunction-sunc-documentation)
- [Widget API Message Types - sUNC Documentation](#widget-api-message-types-sunc-documentation)
- [Metadata API - sUNC Documentation](#metadata-api-sunc-documentation)
- [getfunctionhash - sUNC Documentation](#getfunctionhash-sunc-documentation)
- [hookfunction - sUNC Documentation](#hookfunction-sunc-documentation)
- [hookmetamethod - sUNC Documentation](#hookmetamethod-sunc-documentation)
- [iscclosure - sUNC Documentation](#iscclosure-sunc-documentation)
- [Widget - sUNC Documentation](#widget-sunc-documentation)
- [isexecutorclosure - sUNC Documentation](#isexecutorclosure-sunc-documentation)
- [newcclosure - sUNC Documentation](#newcclosure-sunc-documentation)
- [islclosure - sUNC Documentation](#islclosure-sunc-documentation)
- [restorefunction - sUNC Documentation](#restorefunction-sunc-documentation)
- [Debug - sUNC Documentation](#debug-sunc-documentation)
- [debug.getconstants - sUNC Documentation](#debug-getconstants-sunc-documentation)
- [debug.getconstant - sUNC Documentation](#debug-getconstant-sunc-documentation)
- [debug.getproto - sUNC Documentation](#debug-getproto-sunc-documentation)
- [debug.getprotos - sUNC Documentation](#debug-getprotos-sunc-documentation)
- [debug.getstack - sUNC Documentation](#debug-getstack-sunc-documentation)
- [debug.getupvalue - sUNC Documentation](#debug-getupvalue-sunc-documentation)
- [debug.getupvalues - sUNC Documentation](#debug-getupvalues-sunc-documentation)
- [isrenderobj - sUNC Documentation](#isrenderobj-sunc-documentation)
- [debug.setstack - sUNC Documentation](#debug-setstack-sunc-documentation)
- [debug.setconstant - sUNC Documentation](#debug-setconstant-sunc-documentation)
- [debug.setupvalue - sUNC Documentation](#debug-setupvalue-sunc-documentation)
- [cleardrawcache - sUNC Documentation](#cleardrawcache-sunc-documentation)
- [getrenderproperty - sUNC Documentation](#getrenderproperty-sunc-documentation)
- [Encoding - sUNC Documentation](#encoding-sunc-documentation)
- [base64decode - sUNC Documentation](#base64decode-sunc-documentation)
- [setrenderproperty - sUNC Documentation](#setrenderproperty-sunc-documentation)
- [base64encode - sUNC Documentation](#base64encode-sunc-documentation)
- [lz4compress - sUNC Documentation](#lz4compress-sunc-documentation)
- [Environment - sUNC Documentation](#environment-sunc-documentation)
- [lz4decompress - sUNC Documentation](#lz4decompress-sunc-documentation)
- [Drawing class - sUNC Documentation](#drawing-class-sunc-documentation)
- [getgenv - sUNC Documentation](#getgenv-sunc-documentation)
- [getreg - sUNC Documentation](#getreg-sunc-documentation)
- [getgc - sUNC Documentation](#getgc-sunc-documentation)
- [filtergc - sUNC Documentation](#filtergc-sunc-documentation)
- [getrenv - sUNC Documentation](#getrenv-sunc-documentation)
- [Function filter options - sUNC Documentation](#function-filter-options-sunc-documentation)
- [delfolder - sUNC Documentation](#delfolder-sunc-documentation)
- [Table filter options - sUNC Documentation](#table-filter-options-sunc-documentation)
- [Filesystem - sUNC Documentation](#filesystem-sunc-documentation)
- [delfile - sUNC Documentation](#delfile-sunc-documentation)
- [appendfile - sUNC Documentation](#appendfile-sunc-documentation)
- [isfile - sUNC Documentation](#isfile-sunc-documentation)
- [getcustomasset - sUNC Documentation](#getcustomasset-sunc-documentation)
- [listfiles - sUNC Documentation](#listfiles-sunc-documentation)
- [isfolder - sUNC Documentation](#isfolder-sunc-documentation)
- [loadfile - sUNC Documentation](#loadfile-sunc-documentation)
- [makefolder - sUNC Documentation](#makefolder-sunc-documentation)
- [readfile - sUNC Documentation](#readfile-sunc-documentation)
- [writefile - sUNC Documentation](#writefile-sunc-documentation)
- [Instances - sUNC Documentation](#instances-sunc-documentation)
- [cloneref - sUNC Documentation](#cloneref-sunc-documentation)
- [compareinstances - sUNC Documentation](#compareinstances-sunc-documentation)
- [fireproximityprompt - sUNC Documentation](#fireproximityprompt-sunc-documentation)
- [getcallbackvalue - sUNC Documentation](#getcallbackvalue-sunc-documentation)
- [gethui - sUNC Documentation](#gethui-sunc-documentation)
- [fireclickdetector - sUNC Documentation](#fireclickdetector-sunc-documentation)
- [firetouchinterest - sUNC Documentation](#firetouchinterest-sunc-documentation)
- [getnilinstances - sUNC Documentation](#getnilinstances-sunc-documentation)
- [Metatable - sUNC Documentation](#metatable-sunc-documentation)
- [getinstances - sUNC Documentation](#getinstances-sunc-documentation)
- [getnamecallmethod - sUNC Documentation](#getnamecallmethod-sunc-documentation)
- [isreadonly - sUNC Documentation](#isreadonly-sunc-documentation)
- [getrawmetatable - sUNC Documentation](#getrawmetatable-sunc-documentation)
- [setrawmetatable - sUNC Documentation](#setrawmetatable-sunc-documentation)
- [identifyexecutor - sUNC Documentation](#identifyexecutor-sunc-documentation)
- [Miscellaneous - sUNC Documentation](#miscellaneous-sunc-documentation)
- [Reflection - sUNC Documentation](#reflection-sunc-documentation)
- [setreadonly - sUNC Documentation](#setreadonly-sunc-documentation)
- [gethiddenproperty - sUNC Documentation](#gethiddenproperty-sunc-documentation)
- [sethiddenproperty - sUNC Documentation](#sethiddenproperty-sunc-documentation)
- [isscriptable - sUNC Documentation](#isscriptable-sunc-documentation)
- [getthreadidentity - sUNC Documentation](#getthreadidentity-sunc-documentation)
- [setscriptable - sUNC Documentation](#setscriptable-sunc-documentation)
- [Scripts - sUNC Documentation](#scripts-sunc-documentation)
- [setthreadidentity - sUNC Documentation](#setthreadidentity-sunc-documentation)
- [getscriptbytecode - sUNC Documentation](#getscriptbytecode-sunc-documentation)
- [getscriptclosure - sUNC Documentation](#getscriptclosure-sunc-documentation)
- [request - sUNC Documentation](#request-sunc-documentation)
- [getloadedmodules - sUNC Documentation](#getloadedmodules-sunc-documentation)
- [getrunningscripts - sUNC Documentation](#getrunningscripts-sunc-documentation)
- [getcallingscript - sUNC Documentation](#getcallingscript-sunc-documentation)
- [getscripthash - sUNC Documentation](#getscripthash-sunc-documentation)
- [getscripts - sUNC Documentation](#getscripts-sunc-documentation)
- [getsenv - sUNC Documentation](#getsenv-sunc-documentation)
- [loadstring - sUNC Documentation](#loadstring-sunc-documentation)
- [Signals - sUNC Documentation](#signals-sunc-documentation)
- [firesignal - sUNC Documentation](#firesignal-sunc-documentation)
- [The Connection object - sUNC Documentation](#the-connection-object-sunc-documentation)
- [replicatesignal - sUNC Documentation](#replicatesignal-sunc-documentation)
- [getconnections - sUNC Documentation](#getconnections-sunc-documentation)
- [WebSocket class - sUNC Documentation](#websocket-class-sunc-documentation)
- [sUNC Documentation](#sunc-documentation)
- [sUNC Metadata API](#sunc-metadata-api)
- [sUNC Widget Example](#sunc-widget-example)
- [Unknown](#unknown)
- [Unknown](#unknown)
---
# sUNC Documentation
[Skip to content](https://docs.sunc.su/#sunc-documentation)
[](https://github.com/sUNC-Utilities/docs.sunc.su/edit/main/docs/README.md "Edit this page")
[](https://github.com/sUNC-Utilities/docs.sunc.su/raw/main/docs/README.md "View source of this page")
sUNC Documentation
==================
Welcome to the official documentation for **sUNC** - senS' Unified Naming Convention.
This documentation site serves as the central knowledge base for understanding what sUNC is, how it works, and how to contribute to the project.
Whether you're an executor developer, a curious tester, or a contributor helping document functions, you're in the right place!
Not every original UNC function is tested!
This documentation covers **_only_** the functions that are **actively tested by the sUNC script**. If a function is not listed here, then it is likely not part of our standard.
Over time, sUNC has largely diverged from the original UNC to become better and shaped by executor developers and users, hence why some functions have been deprecated/removed and others may have been added.
* * *
📚 Explore the Docs
-------------------
* [What is sUNC?](https://docs.sunc.su/About/what-is-sunc/)
* [How sUNC Test Results Work](https://docs.sunc.su/About/test-results/)
* [How to contribute](https://docs.sunc.su/About/contributing/)
📜 The script
-------------
| The sUNC testing script | |
| --- | --- |
| [1](https://docs.sunc.su/#__codelineno-0-1)
[2](https://docs.sunc.su/#__codelineno-0-2)
[3](https://docs.sunc.su/#__codelineno-0-3)
[4](https://docs.sunc.su/#__codelineno-0-4)
[5](https://docs.sunc.su/#__codelineno-0-5)
[6](https://docs.sunc.su/#__codelineno-0-6)
[7](https://docs.sunc.su/#__codelineno-0-7) | `getgenv().sUNCDebug = { ["printcheckpoints"] = false, ["delaybetweentests"] = 0, ["printtesttimetaken"] = false, } loadstring(game:HttpGet("https://script.sunc.su/"))() --` |
Please note that as of sUNC v2.0, the test now only runs inside of the official testing game. The latest one may be retrieved from [our Discord server](https://discord.gg/FNNfTUpFYv)
.
* * *
Thank you for being here.
Back to top
---
# Contribution Guide - sUNC Documentation
[Skip to content](https://docs.sunc.su/About/contributing/#contribution-guide)
[](https://github.com/sUNC-Utilities/docs.sunc.su/edit/main/docs/About/contributing.md "Edit this page")
[](https://github.com/sUNC-Utilities/docs.sunc.su/raw/main/docs/About/contributing.md "View source of this page")
Contribution Guide
==================
Welcome to the sUNC documentation project! We worked tirelessly to standardise and make the documentation beautiful and readable for everyone.
This guide outlines the official standards for contributing to the sUNC documentation, including how libraries and functions should be structured and written.
Consistency makes the documentation readable, searchable, and enjoyable to explore.
* * *
Documenting entire libraries
----------------------------
Each library **must** be placed in a folder named after the library itself. Inside this folder, you must include a `README.md` file, which serves as the **index page** for that library, in both this documentation website and also when browsing the documentation repository on GitHub.
### Index page requirements
* Introduce the purpose of the library
* Summarise what you **can** and **cannot** do with it
Index pages _do not_ need to follow this strict format, but they should **_aim_** to do so, for clarity and helpfulness.
* * *
General documentation style
---------------------------
All documentation pages (including function pages and index pages) **must**:
* Use inline links to relevant [Wikipedia](https://wikipedia.org/)
, [Roblox Luau](https://create.roblox.com/docs)
, or other sUNC pages with referencing key terms.
* Use the correct inline link formats, e.g.:
``[](https://docs.sunc.su/About/contributing/#__codelineno-0-1) [`#!luau task.defer`](https://create.roblox.com/docs/reference/engine/libraries/task#defer)``
As you can see, the example above uses a code snippet with `luau` syntax highlighting enabled, whilst also being a hyperlink to the Roblox API documentation for [`task.defer`](https://create.roblox.com/docs/reference/engine/libraries/task#defer)
.
All markdown documents must be formatted using David Anson's ["markdownlint"](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint)
extension, available for free in the Visual Studio marketplace.
This extension alone is not sufficient enough, which is why we use Yu Zhang's ["markdown all in one"](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)
extension too, but only specifically for formatting tables. This makes tables look nice and readable in the source markdown files of the documentation.
The repository for this documentation already includes a `.vscode/extensions.json` file, so the extensions should automatically download for you once you consent.
When formatting tables, open the Command Palette with `Ctrl + Shift + P` (Windows) or `⌘ + Shift + P` (macOS), select "Format Document With...", and select "Markdown All In One" like so:

### Language choices
#### Using British English
It is generally well known around the sUNC community that the documentation and most things that have a lot of text are written using British English. This usually means some words Americans spell with a "z" will instead use an "s". If you are unsure, please check the Oxford or Cambridge dictionaries.
#### The "Oxford Comma"
Please use the [Oxford Comma](https://en.wikipedia.org/wiki/Serial_comma)
when writing lists.
This means that in a list of three or more items, a comma is placed before the final "and" or "or".
For example: _"apples, oranges, and bananas"_ rather than _"apples, oranges and bananas"_.
The Oxford Comma avoids ambiguity and makes lists clearer. It also mirrors natural pauses in daily speech, which makes the text easier to read aloud and less confusing to follow.
#### Short-form contractions
Please avoid contractions like "isn't" and "it's". Instead, use "is not" and "it is" respectively. These are just examples, but the same rules apply for all contractions. Because this documentation is formal and technical rather than conversational, contractions should be avoided.
#### Articles before a word
An article is something that goes before a word, like `a` and `an`. This is a polite reminder to **_not_** just put an `an` in front of things that have a vowel _literally_, but rather whether the word has a vowel **sound** when pronounced out loud. Non-native English speakers tend to get this rule wrong sometimes.
If unsure about pronunciation, assume that pronunciation is done with a British RP accent - the best sources to listen to are the Oxford and Cambridge dictionaries again where the pronunciation is perfect.
* * *
Function documentation
----------------------
Each function must have **its own file**, named after the function (e.g. `newcclosure.md`).
### Title Format
The title of the page must be written as:
`` [](https://docs.sunc.su/About/contributing/#__codelineno-1-1) # `function_name` ``
Important
Do not include emojis in function **titles**.
### Notices
Place all important `!!!` callouts (warnings, errors, info) **immediately under the title**. These should include anything the user must know before using the function.
* * *
### Description
Provide a description of the function directly after any notices.
When referencing the function name, **always** use the code snippet format:
``[](https://docs.sunc.su/About/contributing/#__codelineno-2-1) `#!luau function_name` allows you to do this and that.``
* * *
### Type definition
Type definitions are important!
You **must** always include a Luau-style type definition when documenting a function.
Include the Luau type definition **at the bottom of the first section**, with Luau syntax highlighting but **no _individual line highlighting_ or line numbers**:
`[](https://docs.sunc.su/About/contributing/#__codelineno-3-1) function newcclosure(functionToWrap: (A...) -> R...): (A...) -> R...`
Make sure it precedes the parameters table.
* * *
### Parameters
The parameters must always be neatly described in a function, like so:
``[](https://docs.sunc.su/About/contributing/#__codelineno-4-1) ## Parameters [](https://docs.sunc.su/About/contributing/#__codelineno-4-2)[](https://docs.sunc.su/About/contributing/#__codelineno-4-3) | Parameter | Description | [](https://docs.sunc.su/About/contributing/#__codelineno-4-4) |-------------------------|-------------------------------------| [](https://docs.sunc.su/About/contributing/#__codelineno-4-5) | `#!luau parameter_name` | Short description of the parameter. |``
Use [**snake\_case**](https://en.wikipedia.org/wiki/Snake_case)
for **every variable**, and [**camelCase**](https://en.wikipedia.org/wiki/Camel_case)
for **parameters** to easily distinguish between the two.
There should be **no horizontal rule** (`---`) between the _type definition_ and the _parameters_ section.
* * *
### Providing users with examples
Every function page **must** include at least one example.
Use 'Example' or 'Examples' based on how many examples you have
To make the documentation experience more logical and also grammatically correct, please do the following: - Make the heading `## Example` if there is only one example. - Make the heading `## Examples` if there is more than one example. Each example should have its own subheading, e.g. `### Example 1`, `### Example 2`.
Each example should use the following format:
` [](https://docs.sunc.su/About/contributing/#__codelineno-5-1) ## Example [](https://docs.sunc.su/About/contributing/#__codelineno-5-2)[](https://docs.sunc.su/About/contributing/#__codelineno-5-3) ```luau title="Short but descriptive title for your code" linenums="1" [](https://docs.sunc.su/About/contributing/#__codelineno-5-4) -- an example is here [](https://docs.sunc.su/About/contributing/#__codelineno-5-5) print("Hello world!") [](https://docs.sunc.su/About/contributing/#__codelineno-5-6) print("This is some example code") [](https://docs.sunc.su/About/contributing/#__codelineno-5-7) ``` `
* Examples must use `luau` syntax highlighting.
* Line numbers **must** be enabled using `linenums="1"`.
* Each example **must** have a `title` describing in short what the code does.
Back to top
---
# How do test results work? - sUNC Documentation
[Skip to content](https://docs.sunc.su/About/test-results/#how-do-test-results-work)
[](https://github.com/sUNC-Utilities/docs.sunc.su/edit/main/docs/About/test-results.md "Edit this page")
[](https://github.com/sUNC-Utilities/docs.sunc.su/raw/main/docs/About/test-results.md "View source of this page")
How do test results work?
=========================
sUNC is known for its strict tests. Ever since it was made, it was built to expose falsified environments and spoofed globaly by testing for functionality - not just checking for their presence or shallow checking.
* * *
Using the dedicated game
------------------------
As of **sUNC V2**, all tests must be conducted in the official sUNC testing game. This game may be found in our [Discord server](https://discord.gg/FNNfTUpFYv)
.
We chose to do so, because by having a dedicated server, we're able to provide you with the new online test results via Rubiš. This allows us to provide you with verified and reproducible results, instead of people sending meaningless screenshots of their console output.
* * *
Viewing your test results
-------------------------
Once your test is complete, sUNC will generate a short redirect link via `r.sunc.su` like this:

This generated link redirects to **Numelon Rubiš**:

The results page offers a clean, visually appealing UI that lays out which functions passed and which failed, why they failed, and cryptographic guarantees of authenticity.
* * *
Verified integrity
------------------
Rubiš doesn't just store your sUNC test results, it also **verifies** them.
* Every result is **cryptographically signed** by the sUNC test game servers.
* Any tampered or faked data is **flagged as unverified**.
Even if someone tries to replicate the link or manually upload fake data and use it with the results viewer (since [Rubiš is also a public paste service](https://rubis.app/)
which is usable by anyone), it will not work.
Back to top
---
# sUNC introduction - sUNC Documentation
[Skip to content](https://docs.sunc.su/About/what-is-sunc/#sunc-introduction)
[](https://github.com/sUNC-Utilities/docs.sunc.su/edit/main/docs/About/what-is-sunc.md "Edit this page")
[](https://github.com/sUNC-Utilities/docs.sunc.su/raw/main/docs/About/what-is-sunc.md "View source of this page")
sUNC introduction
=================
What is "sUNC"?
---------------
**sUNC** stands for **senS' Unified Naming Convention**. It is a tool designed to check if an executor can properly run essential global functions, following the existing [Unified Naming Convention](https://github.com/unified-naming-convention/NamingStandard/tree/main)
.
Unlike the original UNC (which is now outdated and prone to spoofing), sUNC ensures that functions actually work as intended, by testing them as if they were to be used in a real scenario. However, we are not in any way calling UNC "bad". We are simply stating that people should not be using UNC to deeply test their environment, as it was never intended to do so.
How would I know what fails?
----------------------------
We are not gatekeeping function tests, despite the script being obfuscated.
You are welcome to ask the owner (@sens6222 on Discord) **if you are struggling with passing certain tests**. We keep it this way for now, due to executors already faking their environments to suit the original UNC.
Note that it's also possible to see the detailed reason of a function's failure at the top of the `Developer Console` in game, or on the dedicated sUNC Rubiš site.
Will sUNC be discontinued?
--------------------------
Not in the near future, we hope. However, if sUNC were to be discontinued, we will open source the project after 1-2 months.
* * *
Credits
-------
* [Original UNC Documentation](https://github.com/unified-naming-convention/NamingStandard/tree/main)
Back to top
---
# sUNC Integration Suite - sUNC Documentation
[Skip to content](https://docs.sunc.su/About/Integration-Suite/#sunc-integration-suite)
[](https://github.com/sUNC-Utilities/docs.sunc.su/edit/main/docs/About/Integration-Suite/README.md "Edit this page")
[](https://github.com/sUNC-Utilities/docs.sunc.su/raw/main/docs/About/Integration-Suite/README.md "View source of this page")
sUNC Integration Suite
======================
This integration suite is not related to the functions outlined in the rest of the documentation; this is a **WEB DEVELOPMENT** thing.
The **sUNC Integration Suite** provides a set of external-facing tools and APIs that allow developers to embed sUNC into their own websites, dashboards, or infrastructure.
This suite is especially useful for web developers who work on status websites, people who want to show off their test score on their exploit website, or forums where embedding is allowed.
* * *
What can you do?
----------------
With the sUNC Integration Suite, you can:
* **Embed** rich test result viewers into your site using the [**widget system**](https://docs.sunc.su/About/Integration-Suite/Widget/)
* **Fetch** live, structured function metadata using the [**sUNC Metadata API**](https://docs.sunc.su/About/Integration-Suite/Metadata-API/)
* * *
Support
-------
If you require some assistance or would like some new features in any part of the sUNC Integration Suite, e.g. the widget system, please do not hesitate to contact [`@iirzd`](https://richy.lol/)
in the [sUNC Discord server](https://discord.gg/FNNfTUpFYv)
.
Back to top
---
# Closures - sUNC Documentation
[Skip to content](https://docs.sunc.su/Closures/#closures)
[](https://github.com/sUNC-Utilities/docs.sunc.su/edit/main/docs/Closures/README.md "Edit this page")
[](https://github.com/sUNC-Utilities/docs.sunc.su/raw/main/docs/Closures/README.md "View source of this page")
Closures
========
The **Closures** library enables the inspection, modification and creation of Luau closures with precise control.
It is one of the most powerful tools available, exposing internals in a way that Luau does not natively support out of the box.
This library is incredibly useful for hooking functions to modify game logic to your own advantage, and any other creative uses you can think of.
* * *
What is a closure?
------------------
The term [_"closure"_](https://en.wikipedia.org/wiki/Closure_(computer_programming))
comes from [functional programming](https://en.wikipedia.org/wiki/Functional_programming)
and refers to a function **_plus_** the environment it carries (its **upvalues**).
In Luau, **every function is implemented as a closure** implicitly, even if it doesn't capture anything.
* * *
What can you do?
----------------
With the `Closures` library, you can:
* **Hook** existing functions or metamethods with [`hookfunction`](https://docs.sunc.su/Closures/hookfunction/)
and [`hookmetamethod`](https://docs.sunc.su/Closures/hookmetamethod/)
* **Check** whether the current execution is from your script using [`checkcaller`](https://docs.sunc.su/Closures/checkcaller/)
for **hooking**
* **Clone** a function while keeping the same behavior to avoid tampering, with [`clonefunction`](https://docs.sunc.su/Closures/clonefunction/)
* **Wrap** a Luau closure into a C closure using [`newcclosure`](https://docs.sunc.su/Closures/newcclosure/)
* **Check** a function's closure type with [`iscclosure`](https://docs.sunc.su/Closures/iscclosure/)
, [`islclosure`](https://docs.sunc.su/Closures/islclosure/)
or [`isexecutorclosure`](https://docs.sunc.su/Closures/isexecutorclosure/)
.
* **Hash** a function with [`getfunctionhash`](https://docs.sunc.su/Closures/getfunctionhash/)
* * *
What can't you do?
------------------
Although closure capabilities are powerful, there are natural boundaries:
* You cannot inspect **true C closures' internals** - they are not Luau-defined, compiled, and therefore opaque by design.
* Attempting to implement [`newcclosure`](https://docs.sunc.su/Closures/newcclosure/)
in Luau (e.g. via [`coroutine.wrap`](https://create.roblox.com/docs/reference/engine/libraries/coroutine#wrap)
) **will fail sUNC verification**.
Back to top
---
# postMessage - sUNC Documentation
[Skip to content](https://docs.sunc.su/About/Integration-Suite/Widget/postMessage-API/#postmessage)
[](https://github.com/sUNC-Utilities/docs.sunc.su/edit/main/docs/About/Integration-Suite/Widget/postMessage-API/README.md "Edit this page")
[](https://github.com/sUNC-Utilities/docs.sunc.su/raw/main/docs/About/Integration-Suite/Widget/postMessage-API/README.md "View source of this page")
`postMessage`
=============
`postMessage` sends a typed message to a sUNC Widget `